MATLAB Answers

0

Mean of a subset of columns for every row

Perla González Pereyra さんによって質問されました 2019 年 11 月 12 日 21:55
最新アクティビティ dpb
さんによって 編集されました 2019 年 11 月 13 日 1:00
dpb
さんの 回答が採用されました
I know there are several question like this, but i want my code be more dinamic and work for every input matrix.
So the problems is this: I have a matrix 34X3000, and I want tho get the mean of 10 columns for every row. The output will be 34x300.
So far I had this, I know the error is for the index but I don't no how to do it. Can you help me?
TotalRecordingTimeSec=length(Data);
binsize=10;%Entrada
timeline=0:binsize:TotalRecordingTimeSec;
AllcelsFR=[];
AllFR=[];
for bb=1:size(Data,1)
for cc=1:size(timeline,2)-1
fh=timeline(cc);
th=timeline(cc+1);
BinData=Data(Data>fh & Data<th);
AllFR=[AllFR;nanmedian(BinData)];
end
AllcelsFR=[AllcelsFR AllFR];
end

  0 件のコメント

サインイン to comment.

1 件の回答

dpb
回答者: dpb
2019 年 11 月 12 日 22:33
 採用された回答

N=10;
M=reshape(mean(reshape(Data.',N,[])),size(Data,2)/N,[]).';

  2 件のコメント

This work pretty well, thank you so much. I have to read reshape again
dpb
on 12 Nov 2019 at 23:45
Utilizes that memory storage order in MATLAB is row major and builtin functions such as mean are vectorized to operate by column.
Start with a very small sample dataset like 3x12 or so with N=4, say, that you can verify results by inspection. Then observe each step sequentially at the command line.
(VERY powerful technique)

サインイン to comment.



Translated by