If loop issue help

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

1 voto

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

0 votos

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 Mathematics en Centro de ayuda y File Exchange.

Preguntada:

el 23 de Mzo. de 2021

Respondida:

el 23 de Mzo. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by