Why does this shortcut for eigenvectors of 2x2 symmetric work?

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 replies · 3K views
RickF-
Messages
1
Reaction score
0
Hi,

I'k looking at some MATLAB code specifically eig2image.m at:

http://www.mathworks.com/matlabcent...angi-vesselness-filter/content/FrangiFilter2D

So, I understand how the computations are done with respect to the eigenvector / eigenvalues and using (varitions of ) the quadratic equation etc. But my question is about the computation of the eigenvector using the following code (based on the MATLAB code) given matrix [a b; b d];

%% My code, just a scalar version of eig2image.m for understanding eigenvector decomposition

M = [1,2;2,3];

function [ L1,L2,v1x,v1y,v2x,v2y ] = SymmetricEig( M )

% | a b |
% | |
% | b d |

a = M(1,1);
b = M(1,2);
d = M(2,2);

tmp = sqrt((a - d)^2 + 4*b^2);
v2x = 2*b;
v2y = d - a + tmp;

% Normalize
mag = sqrt(v2x^2 + v2y^2);

v2x = v2x/mag; %% Why is v2x now the correct eigenvector value?
v2y = v2y/mag;

% The eigenvectors are orthogonal
v1x = -v2y;
v1y = v2x;

% Compute the eigenvalues
mu1 = 0.5*(a + d + tmp);
mu2 = 0.5*(a + d - tmp);

% Sort eigen values by absolute value abs(Lambda1)<abs(Lambda2)
check=abs(mu1)>abs(mu2);

L1=mu1;
L1(check)=mu2(check);
L2=mu2;
L2(check)=mu1(check);

Ix=v1x;
Ix(check)=v2x(check);
Iy=v1y;
Iy(check)=v2y(check);

end

Notice my comment above - Why is v2x now the correct eigenvector value? It was b multiplied by two and then normalized to the magnitude of v2x,v2y; Why does this work? (and it does). It must be a shortcut, factorization, etc. but I don't see it and haven't seen anyplace else that does this.

I'm just curious.

Thanks

Rick
 
on Phys.org
b is a real number, so v2x is a real number. A real number cannot be an eigenvector (in a 2D vector space).
What do you mean with "eigenvector value"?