If loop issue help

조회 수: 9 (최근 30일)
Ricardo jose
Ricardo jose 2021년 3월 23일
답변: Star Strider 2021년 3월 23일
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
Jan
Jan 2021년 3월 23일
There are no "if loops" in any programming language I know.
Ricardo jose
Ricardo jose 2021년 3월 23일
the "if" condition then. By looking code can you understand what im struggling with?

댓글을 달려면 로그인하십시오.

답변 (2개)

Star Strider
Star Strider 2021년 3월 23일
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 2021년 3월 23일
편집: Jan 2021년 3월 23일
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
Ricardo jose
Ricardo jose 2021년 3월 23일
ds is a "diff(time)"
Jan
Jan 2021년 3월 23일
You did not mention a variable called "time" yet...

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by