merge_params
Core Octave 중심의 Octave 학습 예제
course/basic/merge_params.m
함수 시그니처
function merged_params = merge_params(old_params, new_params) 전체 코드
전체 코드를 복사해서 Octave에서 바로 실행할 수 있습니다.
function merged_params = merge_params(old_params, new_params)
% merge_params - 기존 파라미터와 새로운 파라미터를 병합하는 함수
%
% 지원:
% Octave
%
% 입력:
% old_params - 기존 파라미터 셀 배열 (key-value 쌍)
% new_params - 새로운 파라미터 셀 배열 (key-value 쌍)
%
% 출력:
% merged_params - 병합된 파라미터 셀 배열 (key-value 쌍)
%
% 설명:
% - 새로운 파라미터에서 기존 파라미터에 없는 키는 추가하고,
% 기존 파라미터에 이미 있는 키는 값을 덮어씁니다.
% - 병합된 파라미터는 key-value 쌍을 순차적으로 하나의 셀 배열로 반환됩니다.
%
% 사용 예시:
% old_params = {'XGrid', 'on', 'YGrid', 'off'};
% new_params = {'YGrid', 'on', 'ZGrid', 'on'};
% merged_params = merge_params(old_params, new_params);
% % merged_params는 {'XGrid', 'on', 'YGrid', 'on', 'ZGrid', 'on'}임.
% 기존 파라미터에서 key-value 쌍을 분리
old_keys = old_params(1:2:end); % 홀수 번째 인덱스는 key
old_values = old_params(2:2:end); % 짝수 번째 인덱스는 value
% 새로운 파라미터에서 key-value 쌍을 분리
new_keys = new_params(1:2:end); % 홀수 번째 인덱스는 key
new_values = new_params(2:2:end); % 짝수 번째 인덱스는 value
% 기존 파라미터에 새로운 파라미터를 병합
for i = 1:length(new_keys)
key = new_keys{i};
% 기존 파라미터에서 동일한 key의 위치 찾기
idx = find(strcmp(old_keys, key));
if isempty(idx)
% 새로운 key이면 기존 목록에 추가
old_keys{end+1} = key;
old_values{end+1} = new_values{i};
else
% 기존 key이면 해당 값 덮어쓰기
old_values{idx} = new_values{i};
end
end
% 병합된 key-value 쌍을 하나의 셀 배열로 반환
merged_params = reshape([old_keys; old_values], 1, []);
end 코드 해설
목적
Core Octave 중심의 Octave 학습 예제
입력
- 파라미터: old_params
- 파라미터: new_params
출력
- 반환값: merged_params
실행 흐름
- 입력
- 출력
핵심 함수/주제
new_paramsold_paramsfindisemptylengthreshapestrcmp
실습 과제
- 핵심 함수 new_params의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
- "입력 -> 출력" 흐름을 함수 단위로 분리해 리팩터링해보세요.
학습 팁
같은 카테고리의 다른 코드
- colored
course/basic/colored.m - demo-00
course/basic/demo-00.m - demo-01
course/basic/demo-01.m - demo-02
course/basic/demo-02.m - demo-03a
course/basic/demo-03a.m - demo-03b
course/basic/demo-03b.m - demo-04
course/basic/demo-04.m - demo-05
course/basic/demo-05.m - demo-06
course/basic/demo-06.m - demo-07
course/basic/demo-07.m