Octave Atelier

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

Code Detail

save_struct_txt

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

mylib/inst/save_struct_txt.m

목록으로

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

카테고리

mylib Utilities

library

코드 길이

54

lines

작성자

-

날짜 정보 없음

패키지

none

pkg load

함수 시그니처

function save_struct_txt(filename, s)

전체 코드

54 lines

function save_struct_txt(filename, s)
    % save_struct_txt - 구조체 데이터를 텍스트 파일로 저장하는 함수
    %
    % 입력:
    %   filename (문자열): 데이터를 저장할 텍스트 파일의 이름 및 경로.
    %   s (구조체): 저장할 데이터가 포함된 구조체. 각 필드는 숫자 배열 또는 문자열을 포함할 수 있다.
    %
    % 출력:
    %   파일에 구조체의 각 필드가 'key = value' 형식으로 기록된다.
    %
    % 설명:
    %   이 함수는 주어진 구조체 s의 각 필드를 순회하며, 각 필드의 이름과 값을 
    %   텍스트 파일에 저장한다. 숫자 배열은 MATLAB의 mat2str 함수를 사용해 
    %   문자열 형태(예: '[1 2 3]')로 변환되어 기록된다.
    %
    % 예제:
    %   s.frequency = [10 20 30 40 50];
    %   s.phase     = [0 0 0 0 0];
    %   s.amplitude = [1 0.5 0.3 0.2 0.1];
    %   s.fs        = 1000;
    %   s.duration  = 0.5;
    %   save_struct_txt('s1.txt', s);
    
    % 파일을 쓰기 모드('w')로 오픈. 파일이 존재하면 덮어쓰고, 존재하지 않으면 새로 생성.
    fid = fopen(filename, 'w'); 
    if fid == -1
        error('파일 열기에 실패했습니다: %s', filename);
    end

    % 구조체 s의 모든 필드명을 cell 배열로 가져옴.
    fields = fieldnames(s); 
    
    % 각 필드에 대해 반복 수행.
    for i = 1:numel(fields)
        % 현재 필드의 이름과 해당 필드의 값을 가져옴.
        field_name = fields{i};
        field_value = s.(field_name);
        
        % 만약 필드 값이 숫자(스칼라, 벡터, 행렬)인 경우,
        % mat2str 함수를 사용하여 숫자 배열을 문자열로 변환.
        if isnumeric(field_value)
            % fprintf를 사용하여 '필드명 = 값' 형태로 기록. 
            % mat2str 함수는 숫자 배열을 MATLAB 코드 형식의 문자열로 변환한다.
            fprintf(fid, '%s = %s\n', field_name, mat2str(field_value));
        else
            % 숫자가 아닌 경우(예: 문자열), 그대로 기록.
            fprintf(fid, '%s = %s\n', field_name, field_value);
        end
    end

    % 파일 작업 완료 후 반드시 파일을 닫음.
    fclose(fid);
end

코드 해설

목적

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

입력

  • 파라미터: filename
  • 파라미터: s

출력

  • 연산 결과 변수 또는 화면 출력 결과를 확인합니다.

실행 흐름

  1. save_struct_txt - 구조체 데이터를 텍스트 파일로 저장하는 함수
  2. 입력
  3. filename (문자열): 데이터를 저장할 텍스트 파일의 이름 및 경로
  4. s (구조체): 저장할 데이터가 포함된 구조체. 각 필드는 숫자 배열 또는 문자열을 포함할 수 있다
  5. 출력

핵심 함수

  • fprintf
  • error
  • fclose
  • fieldnames
  • filename
  • fopen
  • isnumeric
  • mat2str

실습 과제

  • 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.
  • 핵심 함수 fprintf의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
  • "save_struct_txt - 구조체 데이터를 텍스트 파일로 저장하는 함수 -> 입력" 흐름을 함수 단위로 분리해 리팩터링해보세요.

같은 카테고리 코드

이전 코드 sampling_settings 다음 코드 spwm