Clear Filters
Clear Filters

Hi i'm new to Matlab. I have a matrix of 3985* 720, i want to produce a new matrix from this by averaging every 2 rows (1992*720), i would appreciate if someone can help me on this .

1 view (last 30 days)
Hi i'm new to Matlab. I have a matrix of 3985* 720, i want to produce a new matrix from this by averaging every 2 rows (1992*720), i would appreciate if someone can help me on this .

Accepted Answer

Jan
Jan on 27 Sep 2017
Edited: Jan on 27 Sep 2017
data = rand(3985, 720);
nOut = floor(size(data, 1) / 2);
dataCut = data(1:2*nOut, :);
dataAvg = sum(reshape(dataCut, 2, nOut, []), 1) * 0.5;
dataAvg = reshape(dataAvg, nOut, []); % Or: squeeze(dataAvg)
Explanation:
  • Consider that M need not be a multiple of 2
  • Reshape the [M x N] array to a [2 x M/2 x N] array
  • Sum over the first dimension and divide by 2
  • Remove the first dimension to get a 2D matrix again
  1 Comment
Jan
Jan on 27 Sep 2017
Please open a new thread for a new question. Then include the current code and explain, what "does not work" means. The solution will be something like this:
Base = 'C:\YourPath';
FolderList = dir(Base);
FolderList = FolderList([FolderList.isdir]);
for iFolder = 1:numel(FolderList)
aFolder = fullfile(Base, FolderList(iFolder).name);
... Do what you want
end

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!