2016-06-11 14 views
1

私は配列 'MY_STRUCTURES_Array'を1行とN列に持っています。各要素は[1x4構造体]です。私は各[1x4 struct]要素の各構造体から数値のthisFieldを抽出したいと思います。[1x4構造体]の要素の配列を持つMatlabのarrayfun

私が探している結果は、この結果の各行が[1x4構造体]の列に対応する、各thisField値の4xN配列の値です。

私が使用していたコードはこれです:私は、コマンドラインで次のように置く場合

arrayfun(@(x) (x.thisField), MY_STRUCTURES_Array); 

Matlabのは、私が得る、

MY_STRUCTURES_Array{1} 

を誤り

Attempt to reference field of non-structure array. 

を返します。 [1x4構造体]のすべてのフィールドのリスト。

私は、コマンドラインでこれを入れた場合は、

MY_STRUCTURES_Array{1}.thisField 

私はこのように、4つの答えを得る:

ans = 

     1 


ans = 

     1 


ans = 

     1 


ans = 

     0 

私はサイズを見れば

size(MY_STRUCTURES_Array{1}.thisField) 

MATLABは言います"エラーはサイズを使用しています"ので、これは配列ではありません。しかし、私はそれが何であるか分かりません。

私が探している4xN配列を取得する方法を知りません。 [1×4構造体]の行の配列を返しMY_STRUCTURES_Arrayコマンドから

UPDATE

出力。

Name      Size    Bytes Class Attributes 

MY_STRUCTURES_Array  1x103   1371136 cell  

出力MY_STRUCTURES_Array {1} .thisFieldはMY_STRUCTURES_Array {1から何

出力を返し玉葉から:MY_STRUCTURES_Array {1}何

に玉葉MY_STRUCTURES_Arrayリターンからの出力を返さない玉葉から

出力} .thisFieldは元の投稿に表示されました。

+0

「MY_STRUCTURES_Array」、「whos MY_STRUCTURES_Array {1}」、「MY_STRUCTURES_Array {1} .thisField'の3つのコマンドの出力を表示できますか? –

+0

@StewieGriffin - 更新を参照してください。 – Jim

答えて

1

MY_STRUCTURES_ArrayにはMY_STRUCTURES_Array{1}と表示されているという事実は、それがセルアレイであることを示しているので、それに基づいて回答します。

は、我々は構造体アレイのセルアレイとしてMY_STRUCTURES_Arrayを有する言う:

MY_STRUCTURES_Array = {[1x4 struct], [1x4 struct], [1x4 struct]} 

それはN要素(ここでN = 3)を含みます。各要素は、4つの要素とさまざまなフィールドを持つ構造体配列です。単一の数値を含むフィールドfooの値を抽出します。arrayfun()を使用

out = arrayfun(@(x) x.foo, cell2mat(MY_STRUCTURES_Array')') 

これは、2D構造体の配列に、次いで抽出構造体アレイのセルアレイを変換

out = zeros(4, N); 

for it = 1 : N 
    out(:, it) = [MY_STRUCTURES_Array{it}.foo]; 
end 

out(i, j)現在、MY_STRUCTURES_Array{j}(i).foo

EDITの値を含みます各要素からのフィールドfoo

関連する問題