メンバ変数に行列を持つ構造体の配列について, その行列の特定の要素を配列で平均したい

メンバ変数に行列を持つ構造体の配列について, その行列の特定の要素を配列で平均したいと考えていますが, 「中かっこまたはドット インデックス式からの必要な出力は 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 個の結果があります。

 采纳的回答

Akira Agata
Akira Agata 2020-3-11

2 个投票

以下の方法ではいかがでしょうか?
% 構造体配列からフィールド b の (1,1) 要素だけを抽出
c = arrayfun(@(x) x.b(1,1), a);
% 平均値を計算
c_av = mean(c);

1 个评论

Daiki Sekizawa
Daiki Sekizawa 2020-3-13
できました
ありがとうございます

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!