Octave Atelier

코드와 해설을 함께 읽는 학습 문서

Code Detail

csv2struct

Control & Dynamics + Data I/O 중심의 Octave 학습 예제

ex-recv/02/02_pjm/csv2struct.m

목록으로

코드를 복사해 Octave에서 바로 실행할 수 있습니다.

카테고리

Submission Archive

submission

코드 길이

29

lines

작성자

-

날짜 정보 없음

패키지

io

pkg load

함수 시그니처

function CSVout = csv2struct(filename, datarow, fieldrows)

전체 코드

29 lines

function CSVout = csv2struct(filename,datarow,fieldrows)
####  Output
####  CSVout.date
####  CSVout.("TICKER").("PRICE")

##  Inputs
##  filename (str)
##  datarow  (1,1) : 데이터 첫 행 인덱스
##  fieldrows(1,N) : 필드 행 인덱스
  pkg load io

  csv_tot = csv2cell(filename);
  fieldnames = csv_tot(fieldrows,2:end);
  N_levels = length(fieldrows);
  N_fields = size(fieldnames,2);

  CSVout.date = csv_tot(datarow:end,1);
  for jj = 1:N_fields

    ref = 'CSVout';   ##  다중 구조체 경로 정의
    for ii = 1:N_levels
      ref = sprintf('%s.(%s)', ref, ['"' fieldnames{ii,jj} '"']);
    end
    eval([ref '= cell2mat(csv_tot(datarow:end,jj+1));'])

  end

end

코드 해설

목적

  • Control & Dynamics + Data I/O 중심의 Octave 학습 예제

입력

  • 파라미터: filename
  • 파라미터: datarow
  • 파라미터: fieldrows

출력

  • 반환값: CSVout

실행 흐름

  1. # datarow (1,1) : 데이터 첫 행 인덱스

핵심 함수

  • csv_tot
  • cell2mat
  • csv2cell
  • datarow
  • eval
  • fieldrows
  • filename
  • length

실습 과제

  • 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.
  • 핵심 함수 csv_tot의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.

학습 팁

  • 입력 파일 경로가 현재 작업 디렉터리 기준인지 먼저 확인하세요.

같은 카테고리 코드

이전 코드 read_data 다음 코드 main_02_pjm