2017-12-06 29 views
1

구조체 내부의 특정 필드의 크기를 가져 오려고합니다. 예를 들어ncinfo의 구조체 필드의 크기

필드 ncinfo로부터 얻어지는 구조체의 Dimensions 내부 필드 Name 크기 :

size(finfo.Dimensions.Name)

Error using size Too many input arguments.

: 그냥 size를 사용

finfo = ncinfo('example.nc'); 
finfo.Dimensions.Name 

>>ans = 

x 


ans = 

y 


ans = 

z 

은 명백한 에러를 야기 다른 방법으로 어떻게 할 수 있습니까?

또한 finfo.Dimensions.Name의 내용을 별도의 배열이나 구조체에 저장하고 싶습니다. 하지만 비슷한 오류가 발생합니다. 예를 들어 :

a.b=finfo.Dimensions.Name 

는 오류를 반환합니다

Illegal right hand side in assignment. Too many elements.

답변

1

귀하의 문제는 ncinfo에 의해 반환 된 구조에서 Dimensions 필드가 자신에게 array of structures, 그리고 것입니다 당신은 구조 배열의 필드에 액세스 할 때 각 배열 요소에 대해 하나씩 comma-separated list of values을 반환합니다. 당신은 cell array 예를 들면,이 값을 수집해야합니다 : 당신은 단지 차원의 수를 알고 싶다면

nameCell = {finfo.Dimensions.Name}; % Now a 1-by-3 cell array of names 

, 당신은 지금처럼 Dimensions 필드의 크기를 확인할 수 있습니다

N = size(finfo.Dimensions); 
2

documentation for ncinfo 일 경우, Dimensions배열 구조체이므로, 원하는 것을 더 명확히해야합니다.

S.Dimensions(1).Name = 'x'; 
S.Dimensions(2).Name = 'y'; 
S.Dimensions(3).Name = 'z'; 

size(S.Dimensions) 

반환 :

ans = 

    1  3 
을 당신이 'Dimensions' 필드의 size하려면

는 그 쿼리입니다