find mean for each 4 row in 124x7 matrix

1 visualizzazione (ultimi 30 giorni)
nada
nada il 20 Gen 2019
Commentato: nada il 21 Gen 2019
Hi all ,,,
I have matrix U=124 x 7
I want to find the mean through all 4 rows of each column
the result be 31 x7

Risposta accettata

madhan ravi
madhan ravi il 20 Gen 2019
Modificato: madhan ravi il 20 Gen 2019
b=mat2cell(U,repmat(4,1,size(U,1)/4)); % where U is 124 X 7 matrix
R=cellfun(@(x) mean(x),b,'un',0);
Result=vertcat(R{:})
  3 Commenti
madhan ravi
madhan ravi il 21 Gen 2019
"if there is a simple loop to do that.."
[m,n]=size(U);
Result=zeros(m/4,n);
for k = 1:m/4
Result(k,:)=mean(U(k*4-3:k*4,:));
end
nada
nada il 21 Gen 2019
That's wonderful ......thank you again

Accedi per commentare.

Più risposte (1)

Image Analyst
Image Analyst il 20 Gen 2019
You can do it in as little as two lines of code with blockproc() from the Image Processign Toolbox:
U = randi(9, 124, 7); % Original sample data
% Define the function that we will apply to each block.
% This function will return a value that is the mean of the elements in the block.
% Output array will be 31 by 7.
meanFilterFunction = @(theBlockStructure) mean(theBlockStructure.data(:));
% Block process the image to replace every pixel in the
% 4 pixel by 1 pixel block by the mean of the pixels in the block.
blockSize = [4 1];
blockMeanArray = blockproc(U, blockSize, meanFilterFunction); % Works.
blockproc() moves along in "jumps" of the block size that you specify - it does not slide over by one element at a time like conv2() does. If you'd used conv2() you would have to subsample the result.
  2 Commenti
nada
nada il 20 Gen 2019
Thank you
but the result was not the elements mean
Image Analyst
Image Analyst il 21 Gen 2019
It most certainly was. I just double checked it. Check your numbers again.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by