2017-01-08 17 views
0

struct(52個の変数を持つ2つのフィールド)を行列(2x52)に変換する方法はありますか?私も同じことをしているstruct2cellを試してみましたが、私に1×1のセル配列を与える、私は次のことを試してみました構造体を行列に変換する

struct: 

    sym (1x53) 
    prob (1x53) 

symProb = reshape({x.sym}, size(53)); 

ありがとうございます。

+0

あなたはこれらの変数を持つ構造体、あなたの実際の例を提供することはできますか? – Marcin

答えて

3

おそらく(それが唯一の二つのフィールドだから)最も簡単な方法は、単にcat

result = cat(1, x.sym, x.prob); 

た場合、またはあなただけの[];

result = [x.sym; x.prob] 

を使用することができますを使用して第1の次元に沿ってそれらを連結することですより一般的な解決策が必要な場合は、struct2arrayを若干形を変えて使用することができます

result = reshape(struct2array(x), [], numel(x)).'; 

symprobのデータは、実際には同じデータ型であり、同じ配列内に配置できると仮定していることに注意してください。そうでない場合は、セル配列だけが両方のフィールドを保持できます。あなたは1 x 1セル配列の内部x.symあなたのデータをラップしているので、

また、あなたのコードは、1×1セル配列を得ています。次のように

0

別のアプローチは、次のとおりです。

symVec = [x.sym(:)] 
probVec = [x.prob(:) 
関連する問題