I’m looking for any good tutorials on vectorizing (loops) in MATLAB.
I have quite simple algorithm, but it uses two for loops. I know that it should be simple to vectorize it and I would like to learn how to do it instead of asking you for the solution.
But to let you know what problem I have, so you would be able to suggest best tutorials that are showing how to solve similar problems, here’s the outline of my problem:
B = zeros(size(A)); % //A is a given matrix.
for i=1:size(A,1)
for j=1:size(A,2)
H = ... %// take some surrounding elements of the element at position (i,j) (i.e. using mask 3x3 elements)
B(i,j) = computeSth(H); %// compute something on selected elements and place it in B
end
end
So, I’m NOT asking for the solution. I’m asking for a good tutorials, examples of vectorizing loops in MATLAB. I would like to learn how to do it and do it on my own.
Here are a couple of MathWorks tutorials I often link to as references on the subject:
And here’s one of Loren’s blog posts that has a nice walkthrough of code vectorization for a particular sample problem:
The particular type of problem you gave as a sample, which involves processing submatrices of a given matrix, could be vectorized in different ways depending greatly on what sort of operation you are doing. You may be able to use CONV2 or FILTER2 instead of your nested for loops. There are also a number of functions in the Image Processing Toolbox that handle neighborhood and block processing of matrices, such as NLFILTER and BLOCKPROC. The documentation for these functions should help you figure out how to use them as a way to vectorize your code.