查看: 207|回复: 8|关注: 0

[已答复] [ 求助 ]滑动平均滤波器的频域特性怎么画?

[复制链接]

新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
发表于 2019-1-22 17:19:44 | 显示全部楼层 |阅读模式
各位大大你们好:

本人matlab、数字信号处理新人中的新人,没有经过任何系统学习,抱着求学的态度前来提问。

目前本人有一个需求,需要用到滑动平均滤波器去进行音频降噪,一个wav音频中混杂有电机声音,这是我在网上找到的滑动平均算法,我照搬过来和我的代码凑到了一起,完整代码见最后,这是粘的是滑动平均的代码:(见红框部分)
1548148507(1).png

然后现在老大要求我画出滑动平均的频域特性,我不会,就从书籍上找出来了一段拿来用,画了之后老大说不对,以下是我画图的代码:(红框部分)
1548147984(1).png
然后画出来的效果是这样的:
1548148090(1).png

请各位大大走过路过顺手解答一下吧,小女子不胜感激!~

完整代码:
load handel.mat
clc;clear;close all;
tic%开始计时
[y,fs]=audioread('C:\Users\honey\Desktop\noise.wav');
S1=y(:,1);

% for i = 8:length(S1)-1
%     if S1(i)==0
% %         disp(i)
%         break
%     end
% end
% % disp(i/fs)
% S1=S1(i:length(S1)-1);
S1=S1(2000:length(S1)-1);

inputyfft=fft(S1);
fmaginput1=(0:length(inputyfft)-1)'*fs/length(inputyfft);%换算频率
TestLength=length(S1);
maginput1=2*abs(inputyfft)/TestLength;%幅值
figure;
t=(0:TestLength-1)/fs;
plot(t,S1);
title('滑动平均 降噪前 时域图')
xlabel('时间')
ylabel('样本值')
figure;
% plot(fmaginput1,maginput1);
plot(fmaginput1(1:TestLength/2),maginput1(1:TestLength/2));
title('滑动平均 降噪前 频域图')
xlabel('频率')
ylabel('幅值')

%%%%%%%%滤波%%%%%%%%%%%%%%%%%%%%
winsize=32;
y1=filter(ones(1,winsize/2+1)/winsize,1,S1);
y2=filter(ones(1,winsize/2+1)/winsize,1,fliplr(S1));
y3=y1+fliplr(y2)-(1/winsize)*S1;
TempData=y3;

% 窗函数方法计算滤波器系数
f=490.25%信号频率
wc=2*pi*f/fs;%截止频率 2*pi*f/fs=rad/Hz fs=16000
Nwin = winsize;%滤波器长度
hwin = fir1(winsize,wc/(fs/2));%计算滤波器系数; b = fir1(N,Wn),N为滤波器节点个数;Wn(0<Wn<1)为归一化截止频率;
disp(hwin)
figure;
freqz(hwin,1);%计算滤波器频率响应
%%%%%%%%滤波%%%%%%%%%%%%%%%%%%%%


figure;
t=(0:TestLength-1)/fs;
plot(t,TempData);
title('滑动平均 降噪后 时域图')
xlabel('时间')
ylabel('样本值')

inputyfft=fft(TempData);
fmaginput1=(0:length(inputyfft)-1)'*fs/length(inputyfft);
maginput2=2*abs(inputyfft)/TestLength;
TestLength=length(inputyfft);
figure;
% plot(fmaginput1,maginput2);
plot(fmaginput1(1:TestLength/2),maginput2(1:TestLength/2));
title('滑动平均 降噪后 频域图')
xlabel('频率')
ylabel('幅值')

toc%结束计时
% sound(TempData,fs,24);



新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
 楼主| 发表于 2019-1-23 09:34:03 | 显示全部楼层
有路过的大大帮忙答疑解惑嘛??????:'(

新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
 楼主| 发表于 2019-1-23 13:37:28 | 显示全部楼层
有人嘛?????help!!!~~~~

新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
 楼主| 发表于 2019-1-24 09:01:46 | 显示全部楼层
没人帮忙嘛?大家都不会嘛?T T,,,,,,,,

新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
 楼主| 发表于 2019-1-24 13:41:01 | 显示全部楼层
救救孩子吧 !!!!!!!!!!!!!!!!!!!!!!!!!!!

论坛优秀回答者

17

主题

4981

帖子

1107

最佳答案
  • 关注者: 570
发表于 2019-1-24 16:25:24 | 显示全部楼层
LZ 要求“滑动平均滤波器的频域特性”。应该知道滑动平均滤波器的传递函数。
以下给出滑动平均滤波器的传递函数,再此基础上再编写程序计算频域特性。
滑动平均滤波器.jpg

新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
 楼主| 发表于 2019-1-24 16:43:38 | 显示全部楼层
songzy41 发表于 2019-1-24 16:25
LZ 要求“滑动平均滤波器的频域特性”。应该知道滑动平均滤波器的传递函数。
以下给出滑动平均滤波器的传递 ...

老师您好,不好意思,我这块是完全0基础的,所以比较小白

那个传递函数我是完全不知道,我现在知道的就是一些基本信息,然后那个滑动平均的代码也是从网上抄来的 ..

换句话说,如果不知道传递函数的话,是不是意味着我就没法画频域特性图了呢??

论坛优秀回答者

17

主题

4981

帖子

1107

最佳答案
  • 关注者: 570
发表于 2019-1-25 08:30:24 | 显示全部楼层
honeyhan 发表于 2019-1-24 16:43
老师您好,不好意思,我这块是完全0基础的,所以比较小白

那个传递函数我是完全不知道,我现在知道的就 ...

对在LZ的这种情况下只有知道传递函数,才能画出滤波器的频域特性。

新手

5 麦片

财富积分


050


1

主题

14

帖子

0

最佳答案
 楼主| 发表于 2019-1-25 13:58:05 | 显示全部楼层
songzy41 发表于 2019-1-25 08:30
对在LZ的这种情况下只有知道传递函数,才能画出滤波器的频域特性。

好的,谢谢宋老师,我再去学习学习!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表