HOW TO AVOID OVERWRITING WITH COMBINED FOR/IF LOOPS
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello everybody ;
I have a problem with combinaison of loops for and if.
Let's say that I have this matrix which is combined of positiv and negativ numbers.
A=[ 1 4 7 -8 -1 -7; -2 1 3 4 5 9; 1 2 5 -8 -7 4;1 2 4 -4 7 -2; -3 5 -7 -1 1 1]
If I want to set a condition to every element depending on its sign, and add 3 for negative numbers while substracting 7 to positive numbers
I wrote then the following code
B=zeros(size(A))
for i=1:length(A)
if A(i)<0
B(i)=A(i)+3
else
B(i)=A(i)-7
end
end
the problem is the overwriting of the matrix B (which I don't understand why) and the non-saving of the results also.
Any help please
thank you
0 commentaires
Réponse acceptée
Jan
le 3 Mar 2017
Modifié(e) : Jan
le 3 Mar 2017
length(A) is 6, so you process the first 6 elements only. To process the complete matrix:
for i = 1:numel(A)
...
By the way: a vectorized version:
B = A + 3;
B(A >= 0) = A(A >= 0) - 10;
Or:
B = zeros(size(A));
match = (A < 0);
B(match ) = A(match) + 3;
B(~match ) = A(~match ) - 7;
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!