2

Matlabに次のものがあるとしますstruct(JSON ファイルから読み取る)。

>>fs.
fs.dichte              fs.hoehe               fs.ts2                 
fs.temperatur          fs.ts3                 fs.viskositaet
fs.ts1                 fs.ts4

fs.ts*コンポーネントには別の が含まれていますstruct。この特定のケースでは、 のインデックスはts1 から 4 になりますが、別のケースでは 2 または 7 になることもあります。考えられる入力を処理できるようにプログラムを柔軟にする必要があります。だから私の質問は次のようになります: の最大インデックスを照会する方法はts? 理想的な世界では、これは機能します。

who fs.ts*

しかし、残念ながら、何も返されません。何か案は?

(ちなみに、私は Octave を使用しており、テストに使用できる Matlab はありません。ただし、両方の環境で機能する解決策が実際にあるはずです。 )

4

2 に答える 2

3

を使用fieldnamesして、構造体のすべてのフィールド名を取得し、次に を使用regexpして、で始まるものをts抽出し、番号を抽出できます。次に、数値を比較して最大のものを見つけることができます。

fields = fieldnames(fs);

number = str2double(regexp(fields, '(?<=^ts)\d+$', 'once', 'match'));
numbers = number(~isnan(number));

[~, ind] = max(number);
max_field = fields{ind};
max_value = fs.(max_field);
于 2016-08-29T12:27:52.167 に答える