fs=44100;
[x,fs,bits]=wavread('ding11wav');
%sound(x)
t=0:(size(x)-1);
x2=rand(1,length(x))'; %产生一与x长度一致的随机信号
y=x+x2;
%加入正弦噪声
t=0:(n-1);
Au=003;
d=[Ausin(2pi500t)]';
y=x+d;
wp=025pi;
ws=03pi;
wdelta=ws-wp;
N=ceil(66pi/wdelta); %取整
wn=(02+03)pi/2;
b=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率
figure(1)
freqz(b,1,512)
f2=filter(bz,az,y)
figure(2)
subplot(2,1,1)
plot(t,y)
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f2);
title('滤波后的时域波形');
sound(f2); %播放滤波后的语音信号
F0=fft(f1,1024);
f=fs(0:511)/1024;
figure(3)
y2=fft(y,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512))); %画出滤波前的频谱图
title('滤波前的频谱')
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2)
F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图
title('滤波后的频谱')
xlabel('Hz');
ylabel('fuzhi');
你这LPF函数是别人写的吧,里面还有一个新的F2T()函数不知道是什么,不是MATLAB自带的,也是别人写的,你没拿过来吧。
不管了,你按我给的写,直接全复制到一个文件里,运行就行了。
close all;
clear all;
dt=0001;
fm=1;
fc=10;
T=5;
t=0:dt:T;
mt=sqrt(2)cos(2pifmt);
s_dsb=mtcos(2pifct);
B=2fm;
figure(1);
subplot(311);
plot(t,s_dsb);
hold on;
plot(t,mt,'r--');
title('DSB调制信号');
xlabel('t');
f_dsb=fft(s_dsb);
temp=f_dsb;
temp([50:4953])=0;
s_ssb=ifft(temp);
subplot(312);
plot(t,s_ssb);
hold on;
plot(t,mt,'r--');
title('SSB调制信号(下边带)');
xlabel('t');
temp=f_dsb;
temp([1:49])=0;
temp([4953:end])=0;
s_ssb=ifft(temp);
subplot(313);
plot(t,s_ssb);
hold on;
plot(t,mt,'r--');
title('SSB调制信号(上边带)');
xlabel('t');
%
用切比雪夫最佳一致逼近设计线性相位FIR带通滤波器;
%信号为05hz,
09hz,
11hz和15hz的正统信号叠加组成
%通带为[09,11]
%频谱分辨率与信号实际长度N成正比
clear
all;
f1=05;f2=09;f3=11;f4=15;t=0:1203;N=length(t);fs=10;M=512;
x1=sin(2pi(f1/fs)t)+sin(2pi(f2/fs)t)+sin(2pi(f3/fs)t)+sin(2pi(f4/fs)t);
figure(1);
subplot(211);plot(t,x1);title('原信号');
y=fft(x1);
f=(0:1/N:1/2-1/N)fs;
subplot(212);plot(f,abs(y(1:N/2)));grid;xlabel('hz');%处理前频谱
wc1=2f2/fs;wc2=2f3/fs;wc3=2f4/fs;%归一化角频率,用于下面的f1
f1=[0
wc1-005
wc1
wc2
wc2+005
1];
A=[0
0
1
1
0
0];%设置带通或带阻,1为带通,0为带阻
weigh=[1
1
1
];%设置通带和阻带的权重
b=remez(60,f1,A,weigh);%传函分子
h1=freqz(b,1,M);%幅频特性
figure(2)
f=(0:1/M:1-1/M)fs/2;
subplot(211);plot(f,abs(h1));grid;title('带通');
x2=filter(b,1,x1);
S1=fft(x2);
f=(0:1/N:1/2-1/N)fs;
subplot(212);plot(f,abs(S1(1:N/2)));grid;xlabel('hz');%处理后频谱
完整的程序
%写上标题
%设计低通滤波器:
[N,Wc]=buttord()
%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc
[a,b]=butter(N,Wc); %设计Butterworth低通滤波器
[h,f]=freqz(); %求数字低通滤波器的频率响应
figure(2); % 打开窗口2
subplot(221); %图形显示分割窗口
plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图
title(巴氏低通滤波器'');
grid; %绘制带网格的图像
sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数
subplot(222);
plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形
xlabel('时间 (seconds)');
ylabel('时间按幅度');
SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换
w= %新信号角频率
subplot(223);
plot()); %绘制叠加函数S经过低通滤波器以后的频谱图
title('低通滤波后的频谱图');
%设计高通滤波器
[N,Wc]=buttord()
%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc
[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器
[h,f]=freqz(); %求数字高通滤波器的频率响应
figure(3);
subplot(221);
plot()); %绘制Butterworth高通滤波器的幅频响应图
title('巴氏高通滤波器');
grid; %绘制带网格的图像
sf=filter(); %叠加函数S经过高通滤波器以后的新函数
subplot(222);
plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形
xlabel('Time(seconds)');
ylabel('Time waveform');
w; %新信号角频率
subplot(223);
plot()); %绘制叠加函数S经过高通滤波器以后的频谱图
title('高通滤波后的频谱图');
%设计带通滤波器
[N,Wc]=buttord([)
%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc
[a,b]=butter(N,Wc); %设计Butterworth带通滤波器
[h,f]=freqz(); %求数字带通滤波器的频率响应
figure(4);
subplot(221);
plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图
title('butter bandpass filter');
grid; %绘制带网格的图像
sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数
subplot(222);
plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形
xlabel('Time(seconds)');
ylabel('Time waveform');
SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换
w=( %新信号角频率
subplot(223);
plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图
title('带通滤波后的频谱图');
MATLAB数值滤波处理方法有:
首先关于fspecial函数的定义,fspecial函数用于建立预定义的滤波算子。
其语法格式为:
h = fspecial(type)
h = fspecial(type,para)
其中type指定算子的类型,para指定相应的参数;
函数type的类型有:
1、'average'averaging filter为均值滤波,参数为hsize代表模板尺寸,默认值为[3,3]。
函数格式:H = fspecial('average',hsize)
2、 'disk'circular averaging filter为圆形区域均值滤波,参数为radius代表区域半径,默认值为5。
函数格式:H = fspecial('disk',radius)
3、'gaussian'Gaussian lowpass filter为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准值,单位为像素,默认值为05。
函数格式:H = fspecial('gaussian',hsize,sigma)
4、'laplacian' filter approximating the 2-D Laplacian operatorlaplacian filter为拉普拉斯算子,参数alpha用于控制算子形状,取值范围为[0,1],默认值为02
函数格式:H = fspecial('laplacian',alpha)
5、'log'Laplacian of Gaussian filter为拉普拉斯高斯算子,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准差,单位为像素,默认值为05。
函数格式:H = fspecial('log',hsize,sigma)
6、'motion'motion filter运动模糊算子,有两个参数,表示摄像物体逆时针方向以theta角度运动了len个像素,len的默认值为9,theta的默认值为0。
函数格式:H = fspecial('motion',len,theta)
7、'prewitt'Prewitt horizontal edge-emphasizing filter用于边缘增强,大小为[3 3],无参数。
函数格式:H = fspecial('prewitt')
8、'sobel'Sobel horizontal edge-emphasizing filter用于边缘提取,无参数
函数格式:H = fspecial('sobel')the filter H: H'9、'unsharp'unsharp contrast enhancement filter为对比度增强滤波器。参数alpha用于控制滤波器的形状,范围为[0,1],默认值为02函数格式:H = fspecial('unsharp',alpha)
以上就是关于用matlab编程设计一个巴特沃斯滤波器,对声音进行去噪全部的内容,包括:用matlab编程设计一个巴特沃斯滤波器,对声音进行去噪、急求用MATLAB编写用滤波法实现SSB调制的程序(提示:使用LPF函数实现滤波)、求设计一个带通滤波器到matlab程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)