How to take a value between two values

52 ビュー (過去 30 日間)
Amron
Amron 2023 年 9 月 15 日
コメント済み: Dyuman Joshi 2023 年 9 月 27 日
hello, please help me.
i couldn't use "if" statement to take 'r' value. The 'r' value depends on 'd' value. but i don't know how to make the code for this.
lets take an example. when i input 'd' value as 15, the 'r' value that i got is 1.6 instead of 1.8. what should i do?

採用された回答

kintali narendra
kintali narendra 2023 年 9 月 15 日
make small changes in the if statement. The code given below is the right way to use if.
if (10.2 <= d) && (d < 13)
r = 1.6
elseif (13.5 <= d) && (d < 20.0)
r = 1.8
elseif (20.0 <= d) && (d < 22.4)
r = 2.0
end
  5 件のコメント
Stephen23
Stephen23 2023 年 9 月 15 日
"how is the way to identify the property of a variable to know it is a scalar or not?"
isscalar(d)
Amron
Amron 2023 年 9 月 27 日
thankyou kintali narendra, your code works. futhermore, in order to solve the issue that i got when i use that code, i use the "spinner" value rather than "edit field". As the result, the value of 'd' is detected as scalar.

サインインしてコメントする。

その他の回答 (2 件)

Steven Lord
Steven Lord 2023 年 9 月 15 日
If you hover over the underlined <= operators in the code in the MATLAB Editor, you will see a Code Analyzer message explaining why that code doesn't do what you think it does and suggest how you can modify the code to do what you likely want to do.
Alternately, you could use the discretize function to discretize your data without a (potentially lengthy) if / elseif / elseif / elseif ... / end statement.
  2 件のコメント
Stephen23
Stephen23 2023 年 9 月 15 日
編集済み: Stephen23 2023 年 9 月 15 日
"Alternately, you could use the discretize function to discretize your data"
Considering the r output values, how would that work?
Dyuman Joshi
Dyuman Joshi 2023 年 9 月 27 日
@Stephen23 like this -
d = randi([5 25],1,8)
d = 1×8
12 18 21 5 11 9 19 17
X = [10.2,13,13.5,20,22.4];
Y = [1.6,1.8,2,Inf];
out = discretize(d,X,Y)
out = 1×8
1.6000 2.0000 Inf NaN 1.6000 NaN 2.0000 2.0000

サインインしてコメントする。


Stephen23
Stephen23 2023 年 9 月 15 日
d = [11,15,21];
X = [10.2,13.5,20,22.4];
Y = [1.6,1.8,2,Inf];
Z = interp1(X,Y,d, 'previous')
Z = 1×3
1.6000 1.8000 2.0000

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

タグ

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by