我有以下字符串:
A = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)';
并定义了变量f1
和f2
(两个频率值)和t
(时间点矢量)。如何将A
中的等式转换为双精度值?
我试过了:
B = str2num(A); % Result is an empty matrix
和
B = str2double(A); % Result is a NaN value
和
B = double(A);
但没有运气。我怎么能这样做?
答案 0 :(得分:3)
假设你有一个这样的字符串:
str = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)';
您的变量f1
,f2
和t
已定义,您需要使用eval
来评估字符串(并且您可能需要添加';'
到最后将输出抑制到屏幕上):
eval([str ';']);
应该注意eval
isn't usually the best option,尽管有时可能是不可避免的。它可能会产生意想不到的后果。例如,如果用户在您的uicontrol中输入clear all
,则会清除您的工作区。他们也可能通过错误选择变量名称而无意中影响函数,例如输入sin = sin(2*pi*f*t)
。换句话说,您通常应该尝试找到不需要eval
才能运行的替代方案。