find mean for each 4 row in 124x7 matrix
    4 views (last 30 days)
  
       Show older comments
    
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
0 Comments
Accepted Answer
  madhan ravi
      
      
 on 20 Jan 2019
        
      Edited: madhan ravi
      
      
 on 20 Jan 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 Comments
  madhan ravi
      
      
 on 21 Jan 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
More Answers (1)
  Image Analyst
      
      
 on 20 Jan 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 Comments
  Image Analyst
      
      
 on 21 Jan 2019
				It most certainly was.  I just double checked it.  Check your numbers again.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!