How can i replace all positive values of a matrix whit their square root ?
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I need to replace every positive value from this matix whit their square root
A = [1 1 2 3 5 8; 0 2 4 6 8 10; -1 -3 -5 -7 -9 -11;2 4 8 16 32 64;13 21 34 55 89 144];
i tried this
A(A>0)=sqrt(A)
but it doesn't work and MATLAB show me this error
Unable to perform assignment because the left and right sides have a different number of elements.
0 commentaires
Réponses (1)
John D'Errico
le 19 Mar 2020
Modifié(e) : John D'Errico
le 19 Mar 2020
If you need to do it in one line, this will work:
A(A>0) = sqrt(A(A>0));
Or, you could do the test in advance, saving some CPU cycles.
So, why did your original idea not work? Because sqrt(A) has numel(A) elements in the result. However, A(A>0) does not have that many elements. So MATLAB tries to fit a square peg into a round hole, and then gives up. Unless you do as I suggested.
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!