2016-10-03 3 views
0

구조 변수가 parameters이고 다른 변수는 ex foo1, foo2입니다. parameters에는 20 개의 필드가 있습니다. 전의. a,b,c,d,e ... 18 개의 필드 만 저장하고 싶습니다. parameters.aparameters.b을 저장하고 싶지 않습니다. 필드 abfoo1foo2을 제외하고 parameters을 저장하고 싶습니다. 어떻게해야합니까?구조체의 일부 필드를 제외한 모든 필드를 MATLAB의 파일에 저장하십시오.

답변

1

rmfield으로 저장하기 전에 필드를 제거 할 수 있습니다.

tosave = rmfield(parameters, {'a', 'b'}); 
save(filename, '-struct', 'tosave'); 

또는 당신은 모든 필드의 목록, 당신이 원하지 않는 필드를 제거하고 save 이러한 전달 얻을 수 있습니다. 이는 struct 사본을 만들지 않아도된다는 이점이 있습니다.

% Get all fields of parameters 
allfields = fieldnames(parameters); 

% Remove the fields you don't want to keep 
fields = allfields(~ismember(allfields, {'a', 'b'})); 

% Now save the rest 
save(filename, '-struct', 'parameters', fields{:}); 

또는 @excaza 노트로, 당신은 당신이 원하지 않는 변수를 제외 할 -regexp 플래그로 정규 표현식을 정교하게 할 수

.

+0

또는 regex :'save (filename, '-struct', 'data', '-regexp', '[^ ab]');'아마도 ismember보다는 고통이 더 큽니다. – excaza