How to Update value of some matriks element with looping?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Eddy Iswardi
am 27 Mär. 2020
Bearbeitet: Les Beckham
am 28 Mär. 2020
I have condition for my matrix. Matrix x1,x2, and y. When element of y is less than 10, the y element will update will sum of x1 and x2 until the element is 10 or more. This is my code.
clc;
clear;
x1=[1 2 3 4 5 6 7 8 9 10];
x2=[1 2 3 4 5 6 7 8 9 10];
y=[10 9 11 10 11 11 9 10 12 12];
while y<10
y=x1+x2;
end
y
And then, if the problem obove is clear. I want to know how many sum (in this case, how many iteration) to achieve values of 10 or more of each element
4 Kommentare
Ameer Hamza
am 27 Mär. 2020
Bearbeitet: Ameer Hamza
am 27 Mär. 2020
You said it make all elements of y 10 or more but then you said
[10 9 11 10 11 11 9 10 12 12] become [10 12 11 10 11 11 9 10 12 12]
The second vector still has 9.
Akzeptierte Antwort
Ameer Hamza
am 28 Mär. 2020
Try this:
x1=[1 2 3 4 5 6 7 8 9 10];
x2=[1 2 3 4 5 6 7 8 9 10];
y=[10 9 11 10 11 11 9 10 12 12];
k = 10;
x12 = x1 + x2;
mask = y < k;
y(mask) = ceil(k./x12(mask)).*x12(mask);
Result:
y =
10 12 11 10 11 11 14 10 12 12
2 Kommentare
Les Beckham
am 28 Mär. 2020
Bearbeitet: Les Beckham
am 28 Mär. 2020
For this part of your question: "I want to know how many sum (in this case, how many iteration) to achieve values of 10 or more of each element", the "iterations" required are given by this part of Ameer's excellent answer:
ceil(k./x12(mask))
If you do this:
iterations = zeros(size(x1));
iterations(mask) = ceil(k./x12(mask))
you will get a vector showing the number of sums required for every element of your original vector with zeros where no iterations (sums) were required.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!