2017-03-20 7 views
0

구조체 만 포함하는 matlab 작업 공간이 있습니다. 모든 구조체에는 동일한 필드가 있습니다. 내가 이름을 가진 작업 공간에서 세 가지 구조가 상상 :여러 구조를 하나로 결합하기

B00002N6AA B00002N6VF B00004OKOP 

을 나는 수행하여 하나의 구조로 결합 할 수 있습니다

combined = [B00002N6AA B00002N6VF B00004OKOP]; 

는 지금은 구조의 수천이있다. 내가 수행하여 그들의 이름을 얻을 수 있습니다 알고

SNames = who; 

수동으로 복사하고 이름을 붙여 넣기 할 필요없이 어쨌든 하나의 구조로 그들 모두를 결합 있습니까?

답변

3

모든 데이터를 파일에 저장 한 다음 struct에이 파일을 다시로드 한 다음 struct2array을 사용하여 구조체의 배열로 변환 할 수 있습니다.

filename = [tempname, '.mat']; 

% Save all variables starting with B0000 
save(filename, 'B0000*') 

% load the data back into a struct 
tmp = load(filename, '-mat'); 

% Convert this struct into an array of structs 
result = struct2array(tmp); 

% Delete the temporary file 
delete(filename) 

미래에는 데이터를 인코딩하는 동적 변수 이름을 사용하지 않는 것이 좋습니다. 대신 데이터 구조 자체에 데이터를 저장하십시오.