vectorization - How to vectorize the following block of matlab -
vectorization - How to vectorize the following block of matlab -
assume has bounds (1:2,1:2,1:numfoo ), how vectorize next lines:
w = zeros( 2, 2, numfoo ); = 1:numfoo temp(1:2,1:2) = inv( a(1:2,1:2,i) ); w(1:2,1:2,i) = ( temp * (temp') ); end
tyia!
since matrix size 2
, can utilize explicit expressions vectorize code. https://en.wikipedia.org/wiki/inverse_of_a_matrix#inversion_of_2.c3.972_matrices
dets=a(1,1,:).*a(2,2,:)-a(1,2,:).*a(2,1,:); temp=[a(2,2,:)./dets -a(1,2,:)./dets ; -a(2,1,:)./dets a(1,1,:)./dets]; w=[temp(1,1,:).^2+temp(1,2,:).^2,... temp(1,1,:).*temp(2,1,:)+temp(1,2,:).*temp(2,2,:);... temp(2,1,:).*temp(1,1,:)+temp(2,2,:).*temp(1,2,:),... temp(2,1,:).^2+temp(2,2,:).^2];
i tested it, gives same result, , speed-up x100
elapsed time 1.070547 seconds. elapsed time 0.012767 seconds.
matlab vectorization
Comments
Post a Comment