Divide a scalar by all non-zero values in a matrix row and input results into a new matrix
    6 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I have a matrix cA.  I want to input values into a matrix A that are a scalar (1E-14) divided by each element in a row of cA that is not equal to zero.
I have so far:
A = (1E-14)./cA(i,:);
but this uses every column in the ith row.  Some of the cell values in the columns are zero so the result is infinity in some cells/elements of A.  I would only like to input a value into an element of A if cA(i,j) > 0.  Alternatively, if the result is infinity, then just input a zero into that element of A.
4 commentaires
  Meg Noah
      
 le 3 Jan 2022
				Another Trick:
verySmallNumber = 1.0e-32;
denom = cA;
denom(abs(denom) < verySmallNumber & denom > 0) = verySmallNumber;
denom(abs(denom) < verySmallNumber & denom < 0) = -verySmallNumber;
A=MAGICCONSTANT./denom;
  dpb
      
      
 le 3 Jan 2022
				OBTW, 
A(isinf(A)) = 0;
also works by definition that 
isinf(-inf) == isinf(+inf)
Réponses (0)
Voir également
Catégories
				En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


