Help increasing the speed of a piece of code

S
Simone A. · Apr 17, 2023 · 2K views
Question
Dear all,   Plain summary: I have a temperature matrix and I need to find the average temperature of the 8 pixels surrounding each pixel.   I need to subdivide my 134x134 matrices into 3x3 sub matrices. For each submatrix I need to compute the mean and the standard deviation, excluding the central pixel from the calculation.   Then I need to find the values exceding the upper and lower boundaries, namely the mean + standard deviation and the mean - standard deviation, respectively. Then, I need to recalculate the mean excluding the values falling outside the lower and upper boundaries and assign the mean value to the central pixel location (in a new matrix).   The output will be a 134x134 matrix with every value (pixel) corresponding to the average of its surrounding pixels with the "outliers" excluded from the average.   A=magic(134); % Assuming this is my 134x134 Temperature matrix T_background = blockproc(A,[1,1],@BlkFun, 'BorderSize',[1,1],... 'TrimBorder',false, 'PadMethod',NaN); %where BlkFun= function v = BlkFun(s) px = s.data; if isequal(size(px),[3,3]) px(5) = []; av = nanmean(px); sd = nanstd(px); ix = px>=(av-sd) & px<=(av+sd); v = nanmean(px(ix)); else v = NaN; end end  
Expert Answer
Profile picture of Neeta Dsouza
Neeta Dsouza PhD Expert
Answered Aug 19, 2026

It sounds like a convolution would be perfect here.

 

kernel=ones(3,3);
kernel(2,2)=0;
kernel=kernel/sum(kernel(:));
That will find the average of the surrounding pixels.
 
Another strategy would be to create a 3D array with all shifts. Then you can use the functions already in your function. Instead of removing elements (or indexing) you should mark invalid values with NaN. Memory limits should not be an issue since it is only 134x134x8.
100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!