多くのオーディオ信号に対して、MirToolBox mirfeatures()関数の出力を含む、いくつかの構造体を含むセルがあります。フィールド名は各構造体で同じです。構造体のセルに同じ名前のフィールドを計算する
したがって、データはこのように見えますが、はるかに大きくなります。 c {1}は最初の構造体、c {2}は2番目の構造体などです。どちらの構造体も同じフィールド名を含みます。
c{1}.field1.field1A=1;
c{1}.field1.field1B=2;
c{1}.field1.field1C=3;
c{1}.field2.field2D.field2E=4;
c{1}.field2.field2D.field2F=5;
c{1}.field3=6;
c{1}.field4.field4A.field4B.field4C=7;
c{1}.field4.field4A.field4B.field4D=8;
c{2}.field1.field1A=9;
c{2}.field1.field1B=10;
c{2}.field1.field1C=11;
c{2}.field2.field2D.field2E=12;
c{2}.field2.field2D.field2F=13;
c{2}.field3=14;
c{2}.field4.field4A.field4B.field4C=15;
c{2}.field4.field4A.field4B.field4D=16;
各フィールドの平均値を構造全体に計算したいとします。
c{1}.field1.field1A, c{2}.field1.field1A,.. c{n}.field1.field1A=9
の平均。
これを行う簡単な方法はありますか?私が実際に使用している構造にはそれぞれ100個のフィールドがあることに注意してください。
おかげ
は、それが変数を持つことが一般的に悪い考えだ、と述べました代わりに配列を持つことができるときに、特に後で変数を反復処理する場合は、「var1 var2 var3」と呼ばれます。さらに、内側のフィールドをグループ化するだけのサブ構造レベルを持つ理由はありません。これは、デザインが複雑になるためです。構造の設計があなたのコントロールから外れていない場合は、構造自体を再設計して、そのような計算をより簡単にすることを検討したいと思います。 (すなわち、各構造体が関心のある '葉'フィールドのみを含む単一の最も外側の構造体配列)。 –
ありがとう、これは非常に役に立ちます。なぜなら、特に後で変数を繰り返し処理する場合は、s1、s2など、またはフィールド名を参照しているかどうかを判断するのが一般的には「var1 var2 var3」という変数を持つのは良い考えです?後者の場合、これらは上の例で使用するためのちょうどダミーの名前でした。 –
いいえ、後者(前者は一時変数を収集する必要があります)です。あなたのデータ構造は不必要に複雑です。あなたの人生を楽にするために、もっと簡単なものを使用してください。 *いずれかの*フィールドはすべてのフィールドが* data *(つまり、親構造体の '1A'、' 1B'、 '1C'、' 2E'、 '2F'、' 3'、 '4C'、' 4D'のダイレクトフィールドを作り残りを破棄します)、* Or * forget構造体についてまとめ、行が項目で、列がフィールドである2Dセル配列を作成します。それで第1の平均「フィールド」の平均([c {:、1}))、第2のものの平均([c {:、2}])などです。 –