【问题标题】:MATLAB: Conversion from char data type to symbolic data typeMATLAB:从 char 数据类型转换为符号数据类型
【发布时间】:2010-11-23 19:03:47
【问题描述】:

有谁知道如何将字符数据类型转换为符号数据类型? 我把这个:

x = 0.49;
n = 22;
roundn(exp(x*49/200),n)
class ans

答案是:

ans =

 0


ans =

char

我正在寻找数值。如何将 char 数据类型转换为符号数据类型?

谢谢。

【问题讨论】:

    标签: matlab type-conversion data-conversion


    【解决方案1】:

    输出是正确的类;你的问题出在你的语法上。使用:

    class(ans)
    

    而不是

    class ans
    

    第一个给你变量ans的类,第二个给你字符串“ans”的类。

    【讨论】:

    • 哦...谢谢!但我仍然遇到问题。
    • 假设“问题”是指答案仍然是 0,那是因为它是 0。exp(0.049*49/200) = 1.1276roundn(1.1276, 22) = 0。看看这个。我有一种感觉,你错误地使用了roundn……你在这里四舍五入到 10^22。
    【解决方案2】:

    听起来您希望roundn(...) 的输出是一个符号表达式。但是,ROUNDN 似乎是来自Mapping Toolbox 的函数,因此我怀疑它是否适用于符号变量。

    我想也许使用Symbolic Toolbox 中的VPA 是你想要的:

    >> eq = sym('exp(x*49/200)');  %# A symbolic equation
    >> x = sym(0.49);              %# A symbolic value
    >> n = 22;                     %# Number of digits of precision
    >> vpa(subs(eq,'x',x),n)       %# Substitute x and evaluate
    
    ans =
    
    1.127553227831349194548        %# ans is a symbolic value
    

    【讨论】:

      【解决方案3】:

      这是你要找的吗?

      %char
      expr = '1+exp(1)';
      
      %sym
      x = sym(x);
      
      %number
      xval1 = double(x);
      
      %rounded number
      xval2 = double(vpa(x, 2));
      
      >> n = 22;
      >> expr = exp(x*49/200);
      >> res = subs(expr,x,0.49);
      res =
          1.1276
      >> class(res)
      res =
      double
      >> 
      

      【讨论】:

      • 对不起!我不是在找那个。
      • 您能否编辑问题以明确您要查找的内容?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      相关资源
      最近更新 更多