【发布时间】: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
有谁知道如何将字符数据类型转换为符号数据类型? 我把这个:
x = 0.49;
n = 22;
roundn(exp(x*49/200),n)
class ans
答案是:
ans =
0
ans =
char
我正在寻找数值。如何将 char 数据类型转换为符号数据类型?
谢谢。
【问题讨论】:
标签: matlab type-conversion data-conversion
输出是正确的类;你的问题出在你的语法上。使用:
class(ans)
而不是
class ans
第一个给你变量ans的类,第二个给你字符串“ans”的类。
【讨论】:
exp(0.049*49/200) = 1.1276 和 roundn(1.1276, 22) = 0。看看这个。我有一种感觉,你错误地使用了roundn……你在这里四舍五入到 10^22。
听起来您希望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
【讨论】:
这是你要找的吗?
%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
>>
【讨论】: