我需要为自定义方程创建传递函数,以便将传递函数作为变量输入到另一个函数中。我需要转换为tf
的等式是:
y = exp(-(x^2))
我无法使其发挥作用,我尝试使用:
s = tf('s');
H = exp(-(s^2));
但是我收到以下错误:
使用tf / exp时出错(第34行)“exp”命令的输入参数 必须是-M * s形式的传递函数。
谁能告诉我这里我做错了什么?
答案 0 :(得分:2)
在MATLAB中,exp(-T*s)
表示T
秒的时间延迟,这是MATLAB中传递函数中唯一允许使用exp
函数(使用基本MATLAB和控制系统)工具箱,因为你提到了tf
函数。由于exp(-x^2)
不是这种形式,因此它不代表时间延迟,因此不被MATLAB识别为有效的传递函数。
但是,如果等式y = exp(-x^2)
是时域方程,即y(t) = exp(-x(t)^2)
,则首先需要使用拉普拉斯变换将此方程转换为s
域。然而,exp(-x^2)
的拉普拉斯变换不能表示为MATLAB中的传递函数,因为它是一个非线性函数。
在任何一种情况下,您都可以使用线性化来获得指数项或其拉普拉斯变换的线性近似,然后使用它来获得其传递函数。
答案 1 :(得分:0)
您能详细说明如何将此传递函数作为变量传递给另一个函数吗?它是如何在其他函数中使用的?
如果您尝试创建一个通用函数,可以执行以下操作:
y=@(x) exp(-(x^2));
然后您可以执行myFunction(y(2))
之类的操作,或者如果您想将其用作符号表达式,则可以执行以下操作:
syms s;
y=@(x) exp(-(x^2));
myFunction(y(2+3*i)); %or
myFunction(y(s));