メンバ変数に行列を持つ構造体の配列について, その行列の特定の要素を配列で平均したい
9 ビュー (過去 30 日間)
古いコメントを表示
メンバ変数に行列を持つ構造体の配列について, その行列の特定の要素を配列で平均したいと考えていますが, 「中かっこまたはドット インデックス式からの必要な出力は 1 つですが、2 個の結果があります。」とのエラーが出ます.
目的を達成するコードを無理やりforループで書くことは可能ですが, 「mean(a(:).b(1,1))」のようにすっきりと簡潔に書くことはできないのでしょうか.
>> a(1).b=rand(2)
a =
フィールドをもつ struct:
b: [2×2 double]
>> a(2).b=rand(2)
a =
フィールドをもつ 1×2 の struct 配列:
b
>> a(:).b % 中身の確認
ans =
0.8147 0.1270
0.9058 0.9134
ans =
0.6324 0.2785
0.0975 0.5469
>> mean(a(:).b(1,1)) %これがやりたい処理. 平均を計算しようとするとエラーが出る
中かっこまたはドット インデックス式からの必要な出力は 1 つですが、2 個の結果があります。
>> a(:).b(1,1) %平均以前に要素にアクセスしようとしただけでエラーが出る
中かっこまたはドット インデックス式からの必要な出力は 1 つですが、2 個の結果があります。
0 件のコメント
採用された回答
Akira Agata
2020 年 3 月 11 日
以下の方法ではいかがでしょうか?
% 構造体配列からフィールド b の (1,1) 要素だけを抽出
c = arrayfun(@(x) x.b(1,1), a);
% 平均値を計算
c_av = mean(c);
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!