Need help with symbolic variables (if else statement)

4 次查看(过去 30 天)
if a > 10^-8
switch1 = b;
else
switch1 = 0;
end
i get the following error:
Conversion to logical from sym is not possible.
at line:
if a > 10^-8
I Need the above code to work with symbolic variables.
  5 个评论
Adam Danz
Adam Danz 2018-7-13
编辑:Adam Danz 2018-7-13
Ok, see answers. If 'a' must be 'sym' Walter's answer is best. If 'a' can be converted to 'double', see my answer.

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2018-7-13
You need to use piecewise() for this purpose.

更多回答(1 个)

Adam Danz
Adam Danz 2018-7-13
According to your comments, 'a' is a symbol symbolizing a scalar number. If that's the case, you can convert 'a' to numerical.
a = sym('3.14159');
a = double(a); % Convert to double
if a > 10^-8
...
else
...
end
If you prefer to keep 'a' in the sym class, use Walter's answer.
  10 个评论
Akbar
Akbar 2018-7-18
编辑:Akbar 2018-7-18
Ok. I have just solved my issue by substituting if else statement with tanh().

请先登录,再进行评论。

产品


版本

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by