将估计的传递函数应用于信号以模拟信道

时间:2011-03-31 18:47:55

标签: matlab transfer

我正在尝试从一些样本模拟音频传输通道:我有原始录音和录制失真的录音。我正在使用tfestimate()来获得传递函数估计。但现在我对如何应用它来创建模拟失真感到有些困惑。我试图做的是:

res = tfestimate(...)                     % get TF from clean and noisy record.
c = abs(ifft(res));                       % convert to time domain
out = conv(signal, c);                    % filter
wavwrite(out, 16000, 16, '/tmp/out.wav'); % dump

但我对结果不满意,听起来非常不同。

有没有更好的方法将传递函数估计“res”应用于输入“信号”?

1 个答案:

答案 0 :(得分:2)

为了清楚起见,您的“原始录音和录制的失真录音”同时录制,对吧?失真过程不会增加噪声吗?

不是使用tfestimate计算频域中的传递函数,然后尝试将其反转,而是计算FIR Wiener滤波器更直接,将原始录制转换为失真版本。

或者,您可以尝试调整tfestimate返回的传递函数,然后将其转换为时域过滤器。函数invfreqs是一个很好的起点;它将ZPK模型与测量的频率响应相匹配。