help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Vectorizing diagonalization of multiple matrices


From: Brett Green
Subject: Vectorizing diagonalization of multiple matrices
Date: Tue, 5 May 2020 18:23:25 -0400

I have a matrix M which is a function of two variables, x and y, and I want to diagonalize it for many pairs of x and y. If I index x as x(u) and y as y(v), then I can write the elements of the matrix as M(i,j,u,v) where i and j index which element of the matrix.

Currently I am constructing and diagonalizing the matrices with for loops:
x = linspace(0,1,5);
y = linspace(2,3,5);
for u=1:5
for v=1:5
M = [ y(v)*x(u) , x(u) ;  x(u) , -y(v)^2 ];
[vecs(:,:,u,v),vals (:,:,u,v)] = eig(M(:,:,u,v));
end
end

I've been able to vectorize almost all the rest of my code, and this is the last part. Is there a way to vectorize this? My experience with vectorization is fairly limited, so please let me know if you have any side comments on this - for example, whether vectorization would actually speed it up.

I should add that although my MWE is a 2x2, I would in practice be doing this with a 4x4 matrix, if that is relevant to whether or not vectorizing the diagonalization would actually do much to accelerate my code.

- Brett Green

reply via email to

[Prev in Thread] Current Thread [Next in Thread]