Help with if statement in a calculation loop
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello,
I have a problem with a code. I want to calculate some numbers but I want to "limit" my results via a loop.
I want values <1 to be =1, values with >10 to be 10 and the others to be calculated from this equation:
x= x*1.3+0.5. I wrote this code but it is not use
x= 5 + randn * 0.5
if x < 1
x == 1
elseif x > 10
x == 10
else x > 3
x == 1.3* x -0.75
end
Where is the problem?
Thanking you in advance
댓글 수: 2
Nino Wyssen
2021년 4월 12일
I can see several problems here.
First, Matlab likes the lines to be finished with a semicolon, but this isn't necessary if you don't mind your programm outputting all the operations.
Then, you aren't assigning values. You are comparing them. To assign a new value to a variable you only need one equal sign.
Third, you can't use a condition for you else statment, if you only wnt to execute the command below u need to use another elseif.
From your description I suspect the following code does the right thing for you:
x= 5 + randn * 0.5;
if x < 1
x = 1;
elseif x > 10
x = 10;
else
x = 1.3* x -0.75;
end
even though I think it would be better to use a new variable for your result
x= 5 + randn * 0.5;
if x < 1
y = 1;
elseif x > 10
y = 10;
else
y = 1.3* x -0.75;
end
채택된 답변
Stephen23
2021년 4월 12일
The simplest and most efficient solution is to use MIN and MAX:
x = 5 + randn(5,7)*1.5;
x = x*1.3 + 0.5
x = min(max(x,1),10) % this is all you need.
댓글 수: 0
추가 답변 (1개)
Rik
2021년 4월 12일
편집: Rik
2021년 4월 12일
The problem is that you assume Matlab will process each element of x separately. Matlab will only do that if you use a loop.
An alternative is to use logical indexing to process x as an array.
L=x<1;
x(L)=1;
L=x>10;
x(L)=10;
L=x>3;
x(L)=1.3* x(L) -0.75;
댓글 수: 4
Rik
2021년 4월 12일
In that case you should use the code Stephen suggested.
If you have a piecewise function you can use the code I suggested.
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!