카테고리
mylib Utilitieslibrary
코드와 해설을 함께 읽는 학습 문서
Code Detail
Control & Dynamics + Data I/O 중심의 Octave 학습 예제
mylib/inst/save_struct_txt.m
코드를 복사해 Octave에서 바로 실행할 수 있습니다.
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 mylib/inst/clamp.m
mylib/inst/decibell_overall.m
mylib/inst/generate_impulse_force.m
mylib/inst/generate_sinusoid.m
mylib/inst/load_struct_txt.m
mylib/inst/make_axes.m
mylib/inst/my_diff.m
mylib/inst/my_mean.m