Effacer les filtres
Effacer les filtres

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 vue (au cours des 30 derniers jours)
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 .

Réponse acceptée

Jan
Jan le 27 Sep 2017
Modifié(e) : Jan le 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 commentaire
Jan
Jan le 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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by