在matlab中创建自定义传输函数

时间:2014-03-30 20:48:45

标签: matlab

我需要为自定义方程创建传递函数,以便将传递函数作为变量输入到另一个函数中。我需要转换为tf的等式是:

y = exp(-(x^2))

我无法使其发挥作用,我尝试使用:

s = tf('s');
H = exp(-(s^2));

但是我收到以下错误:

  

使用tf / exp时出错(第34行)“exp”命令的输入参数   必须是-M * s形式的传递函数。

谁能告诉我这里我做错了什么?

2 个答案:

答案 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));