How to multiply values to specific elements in a matrix?
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
I have a matrix
                 A=[ 1 0 0 0;
                     0 1 0 0;
                     1 0 0 0;
                     0 0 0 1 ]
I want to multiply an array B= [1,5,7,8] to wherever 1's are in matrix A. Resultant matrix is:
A = [1 0 0 0;
     0 5 0 0 ;
     7 0 0 0;
     0 0 0 8]
How can I do it in vectorized form? Please note that number of ones in input matrix A will always equal the length of array B
Thanks!
0 comentarios
Respuestas (2)
  the cyclist
      
      
 el 19 de Nov. de 2016
        
      Editada: the cyclist
      
      
 el 19 de Nov. de 2016
  
      In MATLAB 2016b (and presumably later yet-to-be-released versions), you can just write
A.*B'
In earlier versions, you need to use bsxfun:
bsxfun(@times,A,B')
0 comentarios
  Roger Stafford
      
      
 el 20 de Nov. de 2016
        Assuming the number of ones in A is equal to the length of B,
   At = A.’;
   At(At==1) = B;
   A = At.’;
0 comentarios
Ver también
Categorías
				Más información sobre Matrix Indexing en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!