MATLAB: How to vectorize a “For Loop”

for loopsvectorize

I have function "" f(t,z)=cos(t).*z "" which for every value of t must be integrated wrt z and output the result as a matrix. I use the following code which takes approximately 15 sec for my real long formulas while the function f which has to be integrated executes almost instantly for any value of its variables.
f=@(t,z) cos(t) .* z
t= linspace(0,3,100);
z= linspace(0,10,1000);
out=zeros(1,numel(t));
for i = 1:numel(t)
Y=f(t(i),z);
out(i)=trapz(z,Y);
end
Any help on how to vectorize this would be greatly appreciated 🙂

Best Answer

f=@(t,z) cos(t) .* z;
t= linspace(0,3,100);
z= linspace(0,10,1000);
out = trapz(z(:),bsxfun(@(t,z)f(t,z),t(:)',z(:)));
Related Question