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

String 如何将包含方程式的字符串转换为双精度值?,string,matlab,double,String,Matlab,Double,我有以下字符串: 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 以及: 以及: 但是没有运气。我该怎么做?假设您有这样一个字符串: str = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)'; 如果已定义变量f1、f2和t,则需要

我有以下字符串:

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
以及:

以及:


但是没有运气。我该怎么做?

假设您有这样一个字符串:

str = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)';
如果已定义变量
f1
f2
t
,则需要使用来计算字符串(您可能希望在末尾添加一个
;”
,以抑制屏幕的输出):


需要注意的是,
eval
,尽管有时这是不可避免的。它可能会产生意想不到的后果。例如,如果用户在您的uicontrol中输入
清除所有
,它将删除您的工作区。它们也可能会在不经意间通过错误地选择变量名来隐藏函数,比如输入
sin=sin(2*pi*f*t)
。换言之,您通常应该尝试寻找不需要
eval
才能发挥作用的替代方案。

如果在其中包含
f1
t
,您希望得到什么结果?您确定
a
中有字符串吗?在我看来,A要么是向量,要么是符号表达式。我希望有一个双重类型的向量,例如:1x300。它代表一个信号,是的,我确定它是一个字符串,因为它在一个uicontrol中被géné评级,类型为'string'和'Style'='Edit'是
f1
f2
,和
t
定义为变量?
f1
f2
是两个定义的频率,
t
也是一个定义的时间向量,谢谢,我不知道这个函数,谢谢你的解释!:-)
B = double(A);
str = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)';
eval([str ';']);