Borrar filtros
Borrar filtros

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

1 visualización (últimos 30 días)
gamer
gamer el 10 de Jun. de 2021
Comentada: gamer el 12 de Jun. de 2021
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 comentarios
dpb
dpb el 10 de Jun. de 2021
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 el 11 de Jun. de 2021
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.

Iniciar sesión para comentar.

Respuestas (1)

Matt J
Matt J el 10 de Jun. de 2021
Editada: Matt J el 10 de Jun. de 2021
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 comentarios
dpb
dpb el 11 de Jun. de 2021
Oh. I see I just duplicated Matt's answer that was already there...I had just read the comments before.
gamer
gamer el 12 de Jun. de 2021
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)?

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by