【问题标题】:How do I calculate the transfer function of a filter in MATLAB?如何在 MATLAB 中计算滤波器的传递函数?
【发布时间】:2011-09-20 13:19:31
【问题描述】:

我必须在数字信号处理课程中做一些练习,但我遇到了一些问题。

我有一个给定的文件(signal.wav 将信号命名为x(n)),添加了一些噪音,我要求从中查找一些信息。添加的噪音是η(n) = sin8000πn。所以我正在处理的信号是s(n) = x(n) + η(n)

为了去除噪声,我应用了一个低通巴特沃斯滤波器,order = 2 和截止频率 = 2000hz。

我想从过滤器和H(z)函数中找到传递函数H(s)。好吧,我知道我必须应用双线性变换,但我不知道如何使用 MATLAB。

谁能帮我解决这个问题?

这是我的代码

[y, fs, nbits] = wavread('signal.wav');

% Playing the file
disp('-> Playing at the original sample rate...');
sound(y, fs);

fprintf('------------------------------------------\n');
% Sampling frequency
fprintf('-> Sample frequency is:      %f.\n', fs);

% Print the min and max values of the audio data.
fprintf('-> The maximum data value is %f.\n', max(y));
fprintf('-> The minimum data value is %f.\n', min(y));
fprintf('------------------------------------------\n');

order = 2;
sampling_freq = fs;
cut_off_freq = 2000;

[butter_a, butter_b] = butter(order,cut_off_freq/(sampling_freq/2));
%[butter_a, butter_b] = butter(order,cut_off_freq/(sampling_freq));

subplot(211), plot(y);
subplot(212), plot(filter(butter_a,butter_b,y));

sound(filter(butter_a,butter_b,y),fs);

【问题讨论】:

  • ITYM 传递函数(不是“传输函数”)?您最好在 dsp.stackexchange.com 中询问这个问题,因为它与 DSP 相关而不是与编程相关。
  • 对不起,我试图从我的母语翻译。我的意思是传递函数。

标签: matlab signal-processing


【解决方案1】:

您应该使用freqs 来计算模拟滤波器的频率响应/传递函数(即H(s))。所以在这种情况下,类似于:

freqs(butter_b,butter_a,200);

将绘制滤波器在 200 个频率点处的频率和相位响应。您还可以提供应计算的点向量(请参阅链接文档)。


对于数字滤波器的传递函数(即H(z)),使用freqz。所以你的语法会是这样的:

freqz(butter_b,butter_a,[],fs)

这将再次像以前一样绘制频率和相位响应。同样,请确保您阅读了链接的文档以正确理解和使用它。

【讨论】:

  • 谢谢,这正是我所需要的。我只将 200 更改为 148864,因为它是信号中的实际样本数。现在我有另一个问题。该图给了我频率 x 10^4 所以我看到截止在 2 x 10^4 = 20000hz 而不是 2000hz。
  • 啊,我明白了问题所在。代码中butter 的输出应收集为[b,a],即首先是分子系数。你把顺序颠倒了。翻转它并尝试这个,你应该得到 2k Hz 的截止频率。
【解决方案2】:

由于您知道信号中不需要的分量的频率,因此您只需估计相位和幅度,然后在时域中从信号中减去添加的噪声分量即可得到解决方案。

有许多方法可以估计正弦的相位和幅度。我建议你试试 Goertzel 算法。

【讨论】:

  • 正如我之前所说,我应用了低通巴特沃斯滤波器来消除噪声。练习是这样说的。
猜你喜欢
  • 2016-07-30
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 2021-08-12
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多