Calculating the eigenvalues of simple shapes
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    John Bach
 el 13 de Mzo. de 2023
  
Hi there,
I've used the strel function to create a range of shapes and I would like to now calculate the eigenvalues of each shape although I am struggling to do this and would really appreciate any help regarding this.
Thank you in advance,
1 comentario
  the cyclist
      
      
 el 13 de Mzo. de 2023
				
      Editada: the cyclist
      
      
 el 13 de Mzo. de 2023
  
			Do you have a reference for what the eigenvalue of a binary shape is? I did some googling of keywords, but didn't find something definite. (Maybe this is well known in image processing, but that is not my specialty.)
Are you stuck on the math of it, or the MATLAB coding? Have you written any code?
Respuesta aceptada
  Walter Roberson
      
      
 el 13 de Mzo. de 2023
        M = double(strel('disk',5).Neighborhood)
E = simplify(eig(sym(M)))
vpa(E)
(the imaginary component is due to round-off error)
M2 = double(strel('octagon',12).Neighborhood)
E2 = simplify(eig(sym(M2)))
vpa(imag(E2))
vpa(E2)
1 comentario
  Bjorn Gustavsson
      
 el 15 de Mzo. de 2023
				The/One benefit of using svd instead of eig is that one get real singular values - which is not a guarantee with eig. Appart from that the soutions should be comparable/similar/identical.
Más respuestas (1)
  Bjorn Gustavsson
      
 el 13 de Mzo. de 2023
        If you have a binary image then why not just run through the svd and see what you get:
I = zeros(256);
I(64:(64+128),64:(64+128)) = 1;
[U,S,V] = svd(I);
figure
subplot(1,2,1)
plot(diag(S))
subplot(1,2,2)
imagesc(U(:,1)*S(1,1)*V(:,1)')
% Or for a funnier example:
I = numgrid('B',258);
I = I(2:end-1,2:end-1);
[U,S,V] = svd(I);
subplot(2,2,1)
plot(diag(S))
subplot(2,2,2)
imagesc(U(:,1)*S(1,1)*V(:,1)')
subplot(2,2,2)
imagesc(U(:,1:4)*S(1:4,1:4)*V(:,1:4)')
subplot(2,2,2)
imagesc(U(:,1:16)*S(1:16,1:16)*V(:,1:16)')
You can also look at the individual eigen-images by something like:
imagesc(U(:,7)*V(:,7)')
HTH
0 comentarios
Ver también
Categorías
				Más información sobre Linear Algebra en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




