質問: 特定の行列のみを取り出して平均を出したい aには512×45の行列があります. そのうちの特定の行のみを取り出して平均を出力したいと考えています. 方法として,2つあると考えています. 1取り出したい列を別のシートに並べて,平均にする (出したい平均❶は1~10行目,❷は3~15行目...のデータを抜き出して並べ,平均にしたい) ここでの問題は取り出したい列の数がそれぞれバラバラであるため,1つのシートにまとめられないことです. 異なる数の行列を1つのシートにまとめる方法はございますでしょうか? 2aから取り出したい行列の数をbにまとめ,bで指定された行列をaから読み込み,平均にする bには❶を求めるために[1,10;3,15]...のようなシートを作り,そこにある行列の位置を抜き出すというイメージです. bで指定された行列をaから読み取ることはできるのでしょうか? for i=1:16 c(i,1)=mean(a(i:i,x)) 最終的には平均したデータを一列に並べられるようにしたいです. よろしくお願いいたします.
回答: 1配列サイズが異なる変数を一つの変数に格納したい場合,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 2指定するインデックスが格納された変数を読み込む場合 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