matlab

구조체형 배열 자동 생성

humming_stereo 2023. 2. 1. 16:34
이전에 나는 구조체형 배열 (struct)을 생성시 eval 함수를 이용하여 생성하였다.
과거 방식과 새로운 방식을 기술한다.
 
num = 1:2:19;
 
% old 1
for ii = 1:10
eval(['old.list_',num2str(ii,'%02d'),' = num(',num2str(ii),');'])
end
 
% old 2
for ii = 1:10
aa = sprintf('mid.list_%02d = num(%d);',ii,ii);
eval(aa)
end
 
% new
for ii = 1:10
id = sprintf('list_%02d',ii);
new.(id) = num(ii);
end
 

결과값은 모두 같은 방식으로 나왔다.

 

첫번째 방식은 eval에 필요한 명령어를 때려 넣고 중간에 필요한 숫자 변수는 num2str 방식으로 때웠다.

가독성이 떨어지고 개판이다.

 

두번째 방식은 발전해서 sprintf 명령어를 사용했다.

가독성이 조금 좋아졌지만 바로 알아보기는 힘들다.

 

이번에 찾은 방식은 미리 변수명을 저장하고 다음과 같이 구조체 배열에 할 수 있다는 것을 알았다.

간결해지고 상당히 마음에 든다.


참고 : https://lazymatlab.tistory.com/117

 

eval을 피하는 방법

eval은 마법의 명령어입니다. 아무리 복잡한 코드도 eval로 모두 생성할 수 있습니다. 그래서인지 많은 분들이 아직도 eval을 사용합니다. 특히 변수명을 A1, A2, A3, …처럼 생성하기 위해 eval을 자주

lazymatlab.tistory.com

 

'matlab' 카테고리의 다른 글

상황별 자주 사용하는 구문  (0) 2023.02.17
matlab 다크모드 변경 (ver.2022)  (0) 2023.02.02
여러 파일의 데이터를 한 변수에 저장  (0) 2023.02.01
날짜 형식  (0) 2023.01.31
문자열 공백 제거  (0) 2023.01.31