Jin*_* Li 3 matlab transfer-function
我有两个时域信号(X和Y).我试图计算它们之间的传递函数.我使用函数tfestimate,它返回作为频率函数的传递函数和tfestimate估计传递函数的频率向量.它只返回正频率,因为我的信号并不复杂.我的问题是如何在时域中可视化这个传递函数.我尝试了以下代码,但返回的函数在时域中被反转.我想知道为什么.
x = randn(16384,1); % generate random signal
gaussFilter = gausswin(100);
gaussFilter = gaussFilter / sum(gaussFilter); % Normalize.
y = conv(x,gaussFilter);
y = y(1:length(x)); % truancate the Y to be the same length as X
txy = tfestimate(x,y,1024);
tyx = conj(txy(end:-1:2)); % since tfestimate only returns for positive frequency, I estimate the result for negative frequency as the conjugate of positive frequency.
t = ifft([txy' tyx']); % use inverse fourier to visualize transfer function in time domain.
Run Code Online (Sandbox Code Playgroud)
结果't'不是传递函数,而是一个时间相反的版本.有人可以帮我理解发生了什么吗?谢谢.
这是一个非常常见的错误.许多人似乎相信'手段转换,但实际上它意味着共轭转置.要简单地转置你应该使用.'
所以:改变
t = ifft([txy' tyx']);
Run Code Online (Sandbox Code Playgroud)
成
t = ifft([txy.' tyx.']);
Run Code Online (Sandbox Code Playgroud)