2012-08-22 7 views
7

構造体があり、2つのフィールド: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) 
... 

は今:

ans = 
     1 
ans = 
     2 
ans = 
     3 

poses.time 

を私はこれを取得しますどのように出力してベクターに入れることができますか?

答えて

13

使用ブラケット:

timevec=[poses.time]; 

トリッキーMATLABあなたは構造体で作業している場合は、私が知っている知っている、あなたはこの1つだけを覚えておく必要があります。)

+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の異なる行の各poseベクトルを返し

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