How to convert row and column vectors of a symmetric matrix to zero if diagonal value is zero?
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
I have symmetric matrices of large size. I need to ensure that if there are any zeros on the main diagonal, then their corresponding row and column vectors are also set to zero. Please help.
0 comentarios
Respuesta aceptada
  Krishna Kumar
      
 el 23 de Jun. de 2011
        This would do it without loop- index=find(diag(your_matrix)==0); your_matrix(index,:)=0; your_matrix(:,index)=0;
Más respuestas (1)
  Andrei Bobrov
      
      
 el 23 de Jun. de 2011
        dg = diag(your_matrix);
your_matrix(dg*dg'==0)=0
dg = diag(your_matrix);
l1 = dg == 0;
your_matrix(diag(l1)==1) = rand(nnz(l1),1)
2 comentarios
  Matt Fig
      
      
 el 23 de Jun. de 2011
				I like your first approach, Andrei. This is along the same line, and faster for larger arrays.
B1 = logical(diag(A));
B1 = bsxfun(@times,bsxfun(@times,A,B1),B1.');
Ver también
Categorías
				Más información sobre Operating on Diagonal Matrices 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!



