카테고리
mylib Utilitieslibrary
코드와 해설을 함께 읽는 학습 문서
Code Detail
Data I/O 중심의 Octave 학습 예제
mylib/inst/load_struct_txt.m
코드를 복사해 Octave에서 바로 실행할 수 있습니다.
function s = load_struct_txt(filename)
58 lines
function s = load_struct_txt(filename)
% load_struct_txt - 텍스트 파일을 구조체로 로드하는 함수
%
% 입력:
% filename (문자열): 불러올 텍스트 파일의 이름 및 경로.
%
% 출력:
% s (구조체): 파일에서 읽어온 데이터를 저장한 구조체.
%
% 설명:
% 이 함수는 'key = value' 형식으로 저장된 텍스트 파일을 읽어와 구조체로 변환한다.
% 값이 숫자인 경우 자동으로 변환되며, 배열 '[1 2 3]' 형식도 처리된다.
% key는 구조체의 필드명이 되며, value는 숫자 배열 또는 문자열로 저장된다.
%
% 예제:
% s = load_struct_txt('s1.txt');
% disp(s.frequency); % [10 20 30 40 50]
% disp(s.fs); % 1000
% disp(s.yrng); % [0 0.5]
% 빈 구조체 생성 (파일의 데이터를 저장할 컨테이너 역할)
s = struct();
% 파일을 읽기 모드('r')로 오픈
fid = fopen(filename, 'r');
if fid == -1
error('파일을 열 수 없습니다: %s', filename);
end
% 파일 끝까지 한 줄씩 읽으며 반복
while ~feof(fid)
line = fgetl(fid); % 한 줄 읽기
if ischar(line) % 줄이 유효한 문자열인지 확인
% ' = ' 구분자로 필드명과 값 분리
parts = strsplit(line, ' = ', 'collapsedelimiters', false);
% 유효한 'key = value' 형식인지 확인
if numel(parts) == 2
field_name = strtrim(parts{1}); % 필드명 (공백 제거)
field_value = strtrim(parts{2}); % 필드값 (공백 제거)
% 필드값이 숫자로 변환 가능한지 확인
num_value = str2num(field_value);
if ~isempty(num_value)
% 변환 가능하면 숫자로 저장
s.(field_name) = num_value;
else
% 변환 불가능하면 문자열로 저장
s.(field_name) = field_value;
end
end
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/make_axes.m
mylib/inst/my_diff.m
mylib/inst/my_mean.m
mylib/inst/my_rms.m