2013-07-31 4 views
1

load() 문을 사용하여 작업 공간에로드되는 기존 구조 배열이 있습니다. 필드에는 chardouble이 포함됩니다.기존 구조를 스크립트로 전환하는 편리한 방법이 있습니까?

필드의 내용을 포함하여이 구조를 스크립트에 대신 작성하려고하지만 구조가 크기 때문에 모든 필드와 값을 직접 작성하고 싶지는 않습니다.

작업 영역의 구조 필드를 편집기로 끌면 필드 이름이 복사됩니다. 구조 배열

example_struct 

의 필드 형태

example_struct.field1 = <some_value>; 

의 문으로 설정되도록

는 필드와 그 값을 추출 할 수있는 쉽고 편리한 방법이 있나요에 스크립트 작성이 포함되어 있지 않습니까?

편집 : 새로운 구조체 배열을 실제 값으로 채우는 스크립트 (M 파일)를 작성하고 싶습니다. 그 스크립트에 대한 진술을 얻으려면 값을 포함하여 load()으로로드 된 기존 구조에서 빼내고 싶지만 스크립트를 작성하지 않고 fprintf 문을 사용하여 수행 할 수 있는지 알고 싶습니다. 태스크.

+0

구조체를 복제하고 싶지만 데이터가 없으면 여기 제안한 트릭을 시도 할 수 있습니다. http://stackoverflow.com/questions/17805291/how-to-add-new-element-to- structure-array-in-matlab/17805633 # 17805633 – Dan

+1

수동으로 모든 필드와 값을 입력하지 않으려면 대신이 "스크립트"로 어떻게 할 것입니까? 어딘가에 저장된 필드 목록이 있습니까? 구조체 배열에 실제 값을 채우는 데 관심이 있습니까? 아니면 필드를 비워 두시겠습니까? –

+0

@EitanT 죄송합니다. 질문이 다소 혼란 스럽습니다. 나는 설명을 추가했다. –

답변

3

제대로 이해하면 구조체를 .mat 파일이 아닌 Matlab 스크립트 파일로 덤프하려고합니다. 당신은 matlab에 몇 줄과 같은 것을 할 수 있습니다

fId = fopen('outputfile.m'); 
names = fieldnames(example_struct); 
for i = 1 : length(names) 
    fprintf(fId, 'example_struct.%s = %d;\n', names{i}, example_struct.(names{i})); 
end 
fclose(fId); 

fieldnames 기능은 example_struct.('name') 표기법을 사용하여 차례로 액세스 할 수있는 구조에 대한 필드 이름의 셀 배열을 반환합니다. 모든 필드가 숫자 인 것처럼 몇 가지 기본적인 가정을했습니다. 귀하의 필요에 맞게 확장 해 드리겠습니다.

+0

그래, 내가 어떻게해야 될지 생각했다. 나는 GUI 필드가 있는지 불필요한 GUI (또는 기타) 트릭이 있는지 궁금 해서요. –

관련 문제