如何使用无理传递函数对信号进行卷积?

信息处理 matlab 过滤器 卷积 转换功能 控制系统
2022-02-09 17:33:36

我有无理传递函数

H(s)=eas
用拉普拉斯逆变换 对于
h(t)=aea2/(4t)2π t3/2
a>0

如何在计算机上实现该系统以绘制相位和幅度响应并将信号与频域中的传递函数进行卷积。

我是否只 ,因为这与物理值有关。或者我是否需要执行双线性变换并将 s 替换s评估siωss2Tz1z+1zeiw

2个回答

这取决于您要绘制的内容:连续时间系统的响应或采样离散时间系统的响应,这始终取决于采样率的选择。

您的系统不受频带限制,因此如果没有一定量的混叠,就无法对其进行采样。

我是否只在 iω 处评估 s

如果您只想查看连续时间系统的近似频率响应,那可能是您最好的方法。请记住,这具有无限带宽:您只能绘制它的有限部分。

并将信号与频域中的传递函数进行卷积。

那要复杂得多。您将需要选择一个采样率并确定您可以容忍的混叠量。有多种方法可以创建离散时间传递函数:

  • 对脉冲响应进行采样
  • 对传递函数进行采样(在 Nyquist 周围有些捏造)
  • 使用双线性变换
  • 使用最小二乘误差极点/零搜索算法在感兴趣的频率范围内拟合传递函数

所有这些方法都会给出不同的结果,并且没有一个能完美地匹配连续函数。哪个最好,取决于您的应用程序的要求。

简而言之,您可以尝试匹配时域行为或频域行为,但不能同时匹配两者。

如果您有符号数学工具箱,那么您应该能够按照此处第 3 章中的说明进行操作。

我试图为您的示例执行此操作:

syms t tau 
a = 10;
omega = 2*pi*100;
f = a*exp(-a^2/(4.0*t))/(2.0*sqrt(pi)*t^(3.0/2.0));
g = exp(1i*omega*t);
z = int(subs(f,tau)*subs(g,t-tau),tau,-inf,inf);
z = simplify(z);
figure(1)
ezplot(f)

但结果z仍然是一个涉及 的表达式int,所以看起来 Matlab 不喜欢我的尝试。