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

조회 수: 9 (최근 30일)
Daiki Sekizawa
Daiki Sekizawa 2020년 3월 10일
댓글: Daiki Sekizawa 2020년 3월 13일
メンバ変数に行列を持つ構造体の配列について, その行列の特定の要素を配列で平均したいと考えていますが, 「中かっこまたはドット インデックス式からの必要な出力は 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일
以下の方法ではいかがでしょうか?
% 構造体配列からフィールド b の (1,1) 要素だけを抽出
c = arrayfun(@(x) x.b(1,1), a);
% 平均値を計算
c_av = mean(c);
  댓글 수: 1
Daiki Sekizawa
Daiki Sekizawa 2020년 3월 13일
できました
ありがとうございます

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 構造体에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!