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

72 visualizzazioni (ultimi 30 giorni)
Taiga Miyashita
Taiga Miyashita il 9 Lug 2020
Commentato: Taiga Miyashita il 10 Lug 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 Commento
madhan ravi
madhan ravi il 9 Lug 2020
If possible can you post it in English with an example and it’s desired output? Translation is not accurate.

Accedi per commentare.

Risposta accettata

Takumi
Takumi il 10 Lug 2020
Modificato: Takumi il 10 Lug 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 Commento
Taiga Miyashita
Taiga Miyashita il 10 Lug 2020
Takumi様
ご教授いただきましてありがとうございます.
①において,cell配列を用いて配列サイズが異なる変数を1つの変数に格納することが出来ました.
meanA = zeros(n,size(A,2));
この部分について理解があまり出来ず,このコードを使用するとうまく出来ませんでしたが,使用しないとうまくいきました.
②においては,うまくいかないのですがおそらく①の方法とあまりやり方としては変わらないと思うので,
これからまた考えてみたいと思います.
この度はありがとうございました.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su 行列および配列 in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!