2016-11-14 10 views
0

私はMATLABデータ1x617 stuct 1フィールドを持っていて、各行は4フィールドの1x1構造体を持っています。データを抽出して617データの4番目のフィールドを取得するにはどうすればいいですか?4番目のフィールドはnx1 doubleです。ありがとうmatlabで構造ファイルの4番目のフィールドを抽出します

+1

を返すために

r = structval(s,'d','collapse',true); 

を使用するには、すべての構造体の上に理解することは困難ですあなたはツリー/フォルダ構造として書くことができますか?これにより、問題をよりよく理解するのに役立つこともあります。 – mpaskov

+0

私は持っているデータは 'diffAnalysisRes1' 1フィールドの1x617構造体です。各行は 'diffAnalysisRes1(1).fullDim'から 'diffAnalysisRes1(617).fullDim'の4フィールドの1x1structです。私は4番目のフィールドのファインネームを 'diffAnalysisRes1(1).fullDim.normDiffCoef'から 'diffAnalysisRes1(617).fullDim.normDiffCoef'まで収集したいと思います。私は617データのすべての4番目のフィールドを収集するコマンドを持っていると期待していますありがとう –

答えて

0

変数の構造によっては、インデックスを参照するだけで簡単に解決できる場合もあります。ただし、構造体変数の配列内にある特定のフィールドからデータを収集する、あなたのケースで、私はここで

MatlabのFileExchangeに structvalを使用することをお勧めしますリンクは以下のとおりです。

Struct 2 array or cell for desiginated fieldname

はのは、と仮定しましょうこの

for idx = 1:617 
    b.a = ones(1,1)*idx; 
    b.b = ones(2,1)*idx; 
    b.c = ones(3,1)*idx; 
    b.d = ones(4,1)*idx; 
    s(1,idx).a = b; 
end 

上記のコードは、1つのフィールドに1x617 stuctを作成し、各行は4つのフィールドを持つ1x1の構造体を有しているようなあなたの変数が見えます。ここでは、各行の4番目のフィールドの名前が同じであると仮定します。

今結果が1x617セルアレイであるstructval

r = structval(s,'d'); 

を使用します。あなたは、各インデックス(例えばNX1配列)でそのフィールドの同じサイズを持って起こる場合は、nx617配列

+0

こんにちはスティーブン、私はmsd = stuctval(diffAnalysisRes1、diffAnalysisRes1.fullDim.normDiffCoef)を試したが、それはmatlab未定義関数または変数 'structval'。私のデータは1x617構造体1フィールドです(ファイル名は "diffAnalysisRes1"です)。各行は4つのフィールドを持つ1x1構造体を持っています。617(ファイル名 "diffAnalysis1(1).fullDim.normDiffCoef"から "diffAnalysis1 617).fullDim.normDiffCoef " –

+0

' structval'はビルドイン関数ではありません。Matlabのファイルエクスチェンジで自由に配布される関数です。まずファイルexchagneから 'structval'をダウンロードして作業ディレクトリに置く必要があります。その関数の2番目の引数は文字列変数でなければなりません(私の例を参照)。** structval(diffAnalysisRes1、 'normDiffCoef')** –

+0

ありがとうございます。 –

関連する問題