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

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

Accepted Answer

Akira Agata
Akira Agata on 11 Mar 2020
以下の方法ではいかがでしょうか?
% 構造体配列からフィールド b の (1,1) 要素だけを抽出
c = arrayfun(@(x) x.b(1,1), a);
% 平均値を計算
c_av = mean(c);
  1 Comment
Daiki Sekizawa
Daiki Sekizawa on 13 Mar 2020
できました
ありがとうございます

Sign in to comment.

More Answers (0)

Categories

Find more on 構造体 in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!