If loop issue help

9 visualizaciones (últimos 30 días)
Ricardo jose
Ricardo jose el 23 de Mzo. de 2021
Respondida: Star Strider el 23 de Mzo. de 2021
Hello everyone, Im trying to evaluate "Acceleration_Value" and categoryze them as 1, 2 or 3 to depending on thei're value. Im having the issue that ds_mapping an array, stays completly full of 0, what am i doing wrong?
Acceleration_Value= abs(Acceleration); % Obtaining absolute values for acceleration/deceleration
ds_mapping=zeros(size(Acceleration)); % Creating variable to store evaluated values
i= ds ;
if 0.7 <= i & i>= 2.79 %#ok<AND2>
ds_mapping= 1;
elseif 2.79 < i & i >= 3.63 %#ok<AND2>
ds_mapping= 2;
elseif 3.63 < i & i >= 6.5 %#ok<AND2>
ds_mapping= 3;
end
  2 comentarios
Jan
Jan el 23 de Mzo. de 2021
There are no "if loops" in any programming language I know.
Ricardo jose
Ricardo jose el 23 de Mzo. de 2021
the "if" condition then. By looking code can you understand what im struggling with?

Iniciar sesión para comentar.

Respuestas (2)

Star Strider
Star Strider el 23 de Mzo. de 2021
An easier way to code that is to use an anonymous function:
ds_mapping = @(i) ((0.7 <= i) & (i>= 2.79 )).*1 + ((2.79 < i) & (i >= 3.63 )).*2 + ((3.63 < i) & (i >= 6.5 )).*3;
ds = linspace(0, 7);
figure
plot(ds, ds_mapping(ds))
grid
See the documentation on Anonymous Functions for details.

Jan
Jan el 23 de Mzo. de 2021
Editada: Jan el 23 de Mzo. de 2021
The if command is not a loop. It requires a scalar condition. You provide vectors, so Matlab inserts an all() automatically.
The "%#ok<AND2>" seems to show, that you have ignored another hint of the editor already: The case 0.7 <= i & i>= 2.79 canbe simplified to i >= 2.79. The same happens for the other branches. It is a good idea not to disable the warnings, but to fix the reason of the warnings.
Do you mean:
if 0.7 <= i & i <= 2.79
% ^ not > ?! Same in the other cases
end
Solution: Either create a loop or use logical indexing. With the data you have posted, both will not run:
ds_mapping=zeros(size(Acceleration)); % Creating variable to store evaluated values
i= ds ;
What is ds ?
  2 comentarios
Ricardo jose
Ricardo jose el 23 de Mzo. de 2021
ds is a "diff(time)"
Jan
Jan el 23 de Mzo. de 2021
You did not mention a variable called "time" yet...

Iniciar sesión para comentar.

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by