Reducing every value of a matrice every time by the same value

1 回表示 (過去 30 日間)
gamer
gamer 2021 年 6 月 10 日
コメント済み: gamer 2021 年 6 月 12 日
Hello, I am new at matlab and I have a question. Is it possible to reduce every single value of a nx2 matrix by the same amount until all values are zero? Maybe in a for loop?
  3 件のコメント
dpb
dpb 2021 年 6 月 10 日
Of course. Math operations by constants on arrays work on the entire array by default.
Of course, hitting zero exactly would require a specific value that is evenly divisible into the original value without rounding so it may or may not work out exactly depending upon the values in the array.
Or, of course, if the values in the array aren't the same, you'd have to compute that difference by dividing by the number of iterations and then do array addition/subtraction which is also array-wide.
Again, floating point rounding can make hitting exactly zero tricky...
John D'Errico
John D'Errico 2021 年 6 月 11 日
Please don't keep on asking the same question. If you want more about this question, then make a comment to Matt's answer, asking him for clarification.

サインインしてコメントする。

回答 (1 件)

Matt J
Matt J 2021 年 6 月 10 日
編集済み: Matt J 2021 年 6 月 10 日
This might be what you want, but as @Scott MacKenzie says you've left a lot of problem details and issues for us to guess,
while any(matrix(:)>0)
matrix=max(matrix-something,0);
end
  4 件のコメント
dpb
dpb 2021 年 6 月 11 日
Oh. I see I just duplicated Matt's answer that was already there...I had just read the comments before.
gamer
gamer 2021 年 6 月 12 日
So first thank you very much for your answers Matt and dpb. Its really that you want to help me!
I tried that one but I think I have to explain the problem more in detail. I created n spheres with that starting location.
p=[r + (a-2*r)*rand(n,1),r + (b-2*r)*rand(n,1)];
Then I wanted to move this spheres. So I created a matrix for speed.
v=rand(n,2);
Then I want to update the position with a for loop.
for f = 1:1000
p = p + v;
end
The movement is working. But I dont get how to slow the balls down. Is it possible to create f = 1000 of matrix out of the first one and the values are always reduced be a=0.001. And if one value is smaller than 0.001, this value should be 0 for the following matrixs
So the for loop would be: p = p + v(f)?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by