如何将包含方程的字符串转换为双精度值?

时间:2017-12-12 20:31:53

标签: string matlab double

我有以下字符串:

A = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)';

并定义了变量f1f2(两个频率值)和t(时间点矢量)。如何将A中的等式转换为双精度值?

我试过了:

B = str2num(A);  % Result is an empty matrix

B = str2double(A);  % Result is a NaN value

B = double(A);

但没有运气。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

假设你有一个这样的字符串:

str = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)';

您的变量f1f2t已定义,您需要使用eval来评估字符串(并且您可能需要添加';'到最后将输出抑制到屏幕上):

eval([str ';']);

应该注意eval isn't usually the best option,尽管有时可能是不可避免的。它可能会产生意想不到的后果。例如,如果用户在您的uicontrol中输入clear all,则会清除您的工作区。他们也可能通过错误选择变量名称而无意中影响函数,例如输入sin = sin(2*pi*f*t)。换句话说,您通常应该尝试找到不需要eval才能运行的替代方案。