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 .

2 views (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)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!