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

235 次查看(过去 30 天)
Taiga Miyashita
Taiga Miyashita 2020-7-9
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 个评论
madhan ravi
madhan ravi 2020-7-9
If possible can you post it in English with an example and it’s desired output? Translation is not accurate.

请先登录,再进行评论。

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 行列および配列 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!