特定の行列のみを取り出して平均を出したい

57 vues (au cours des 30 derniers jours)
Taiga Miyashita
Taiga Miyashita le 9 Juil 2020
Commenté : Taiga Miyashita le 10 Juil 2020
Aには512×45の行列があります.
そのうちの特定の行のみを取り出して平均を出力したいと考えています.
方法として,2つあると考えています.
①取り出したい列を別のシートに並べて,平均にする
(出したい平均❶は1~10行目,❷は3~15行目...のデータを抜き出して並べ,平均にしたい)
ここでの問題は取り出したい列の数がそれぞれバラバラであるため,1つのシートにまとめられないことです.
異なる数の行列を1つのシートにまとめる方法はございますでしょうか?
②Aから取り出したい行列の数をBにまとめ,Bで指定された行列をAから読み込み,平均にする
Bには❶を求めるために[1,10;3,15]...のようなシートを作り,そこにある行列の位置を抜き出すというイメージです.
Bで指定された行列をAから読み取ることはできるのでしょうか?
for i=1:16
C(i,1)=mean(A(i:i,x))
最終的には平均したデータを一列に並べられるようにしたいです.
よろしくお願いいたします.
  1 commentaire
madhan ravi
madhan ravi le 9 Juil 2020
If possible can you post it in English with an example and it’s desired output? Translation is not accurate.

Connectez-vous pour commenter.

Réponse acceptée

Takumi
Takumi le 10 Juil 2020
Modifié(e) : Takumi le 10 Juil 2020
①配列サイズが異なる変数を一つの変数に格納したい場合,cell配列を使うと良いと思います.
A = rand(512,45);
B = cell(2,1);
B{1} = A(1:10,:); % Aの1~10行目
B{2} = A(3:15,:); % Aの3~15行目
n = length(B);
meanA = zeros(n,size(A,2)); % Aの行方向平均
for i=1:n
meanA(i,:) = mean(B{i});
end
②指定するインデックスが格納された変数を読み込む場合
A = rand(512,45);
B = {1:10,3:15}; % 読み込みたい行インデックス
n = length(B);
meanA = zeros(n,size(A,2));
for i=1:n
meanA(i,:) = mean(A(B{i},:));
end
  1 commentaire
Taiga Miyashita
Taiga Miyashita le 10 Juil 2020
Takumi様
ご教授いただきましてありがとうございます.
①において,cell配列を用いて配列サイズが異なる変数を1つの変数に格納することが出来ました.
meanA = zeros(n,size(A,2));
この部分について理解があまり出来ず,このコードを使用するとうまく出来ませんでしたが,使用しないとうまくいきました.
②においては,うまくいかないのですがおそらく①の方法とあまりやり方としては変わらないと思うので,
これからまた考えてみたいと思います.
この度はありがとうございました.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 行列および配列 dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!