2012-08-22 4 views
7

구조체에는 두 개의 필드, timepose이 있습니다. 나는이의 여러 인스턴스를 배열로 구성된 구조체, 그래서 이것의 예는 다음과 같습니다구조체 배열의 필드를 새 배열에 추출합니다.

poses(1) 
    -time = 1 
    -pose = (doesn't Matter) 
poses(2) 
    -time = 2 
    -pose = (doesn't Matter) 
poses(3) 
    -time = 3 
    -pose = (doesn't Matter) 
... 

이제 인쇄 할 때이 :

poses.time 

나는이 얻을 :

ans = 
     1 
ans = 
     2 
ans = 
     3 

어떻게 출력을 받아 벡터에 넣을 수 있습니까?

답변

13

사용 브래킷 :

까다로운 MATLAB가, 내가, 당신은 당신이 구조체로 작업하는 경우이 것을 기억해야합니다 알고 알고

timevec=[poses.time]; 
, 경우에)

+0

문자열 값은 어떻게됩니까? poses.time이 ans = "1"이면 ans = "2"ans = "3", timevec = [poses.time]은 "123"을 나타냅니다. 이 문제를 해결할 수있는 방법이 있습니까? – zml

+1

@zml' "123"'은 이미 배열입니다. 색인을 생성하고 직접보십시오. 그것들을 정말로 분리하고 싶다면'timevec = {poses.time}'셀 배열이 필요합니다. 문자열 배열에 대한 자세한 내용은 [here] (http://nl.mathworks.com/help/matlab/ref/strings.html)을 참조하십시오. –

+0

'poses'가 2d라면? – Eric

1

그 필드 값 (동일 크기의) 벡터이며,는 매트릭스 형태로 결과 필요

posmat = cell2mat({poses.pose}'); 

posmat 다른 행에서 각 벡터를 반환 pose .

관련 문제