特定の行列のみを取り出して平均を出したい
57 views (last 30 days)
Show older comments
Taiga Miyashita
on 9 Jul 2020
Commented: Taiga Miyashita
on 10 Jul 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 Comment
madhan ravi
on 9 Jul 2020
If possible can you post it in English with an example and it’s desired output? Translation is not accurate.
Accepted Answer
Takumi
on 10 Jul 2020
Edited: Takumi
on 10 Jul 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
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!