How to Update value of some matriks element with looping?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
Ameer Hamza
2020-3-27
编辑:Ameer Hamza
2020-3-27
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.
采纳的回答
Ameer Hamza
2020-3-28
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 个评论
Les Beckham
2020-3-28
编辑:Les Beckham
2020-3-28
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!