数字信号处理上机实验MATLAB程序及结果.docx
- 文档编号:3523165
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:29
- 大小:110.47KB
数字信号处理上机实验MATLAB程序及结果.docx
《数字信号处理上机实验MATLAB程序及结果.docx》由会员分享,可在线阅读,更多相关《数字信号处理上机实验MATLAB程序及结果.docx(29页珍藏版)》请在冰豆网上搜索。
数字信号处理上机实验MATLAB程序及结果
研究生《数字信号处理》(dsp)
上机MATLAB实验
实验1熟悉MATLAB环境,会用FFT求信号频谱,相关方法去除噪声。
%生成一个带有噪声的正弦信号
clear;
t=linspace(-2*pi,2*pi,1000);
y=sin(t)+rand(1,1000);
plot(y);
波形图:
%把带有噪声的正弦信号进行FFT分解
z=fft(y);
plot(t,z);
波形图:
%用相关方法除噪声
f=xcorr(y,y);
plot(f);
波形图:
实验2利用相关算法求信号的幅值和相位
%用相关性求信号的幅值与相位
clear;
t=linspace(-2*pi,2*pi,1000);
s=5*sin(t+pi/6)+rand(1,1000);
y=3*sin(t)+rand(1,1000);
ss=s.*s;
sy=s.*y;
yy=y.*y;
x1=length(ss);
x2=length(yy);
x3=length(sy);
rx0=sum(ss)/x1;
ry0=sum(yy)/x2;
rxy0=sum(sy)/x3;
A=sqrt(2*rx0);
B=sqrt(2*ry0);
C=acos(2*rxy0/(A*B));
sprintf('A=%d,B=%d,C=%d',A,B,C)
命令窗口输出结果:
A=5.086632e+00,B=3.109529e+00,C=5.355640e-01
%用改进的相关算法求幅值和相位
clear;
t=linspace(-2*pi,2*pi,1000);
s=5*sin(t+pi/6)+rand(1,1000);
z=3*sin(t);
z1=3*cos(t);
zz=z.*z;
sz=s.*z;
sz1=s.*z1;
x1=length(sz);
x2=length(zz);
x3=length(sz1);
rz=sum(zz)/x2;
rsz=sum(sz)/x1;
rsz1=sum(sz1)/x3;
B=sqrt(2*rz);
C=atan(rsz1/rsz);
A=2*rsz/(B*cos(C));
sprintf('A=%d,B=%d,C=%d',A,B,C)
命令窗口输出结果:
A=4.986266e+00,B=2.998500e+00,C=5.264407e-01
实验三设计一个巴尔低通滤波器
%设计一个巴尔沃特低通滤波器,fp=1khz,fs=2khz,ap=1db,as=40db;
fp=1000;
fs=2000;
wp=2*pi*fp;
ws=2*pi*fs;
ap=1;
as=40;
[n,wc]=buttord(wp,ws,ap,as,'s');
fprintf('阶数为%d\n',n);
[num,den]=butter(n,wc,'s');
%[z,p,k]=buttap(n);
disp('分子多项式系数分别为');
fprintf('%.4e\n',num);
disp('分母多项式系数分别为');
fprintf('%.4e\n',den);
w=[wpws];
h1=freqs(num,den,w);
fprintf('Ap=%.4e\n',-20*log10(abs(h1
(1))));
fprintf('As=%.4e\n',-20*log10(abs(h1
(2))));
w1=[0:
200:
12000*pi];
h=freqs(num,den,w1);
gain=20*log10(abs(h));
plot(w1/(2*pi),gain);
xlabel('Hz');
ylabel('dB');
title('幅频特性');
输出结果:
阶数为8
分子多项式系数分别为
0.0000e+00
0.0000e+00
0.0000e+00
0.0000e+00
0.0000e+00
0.0000e+00
0.0000e+00
0.0000e+00
6.2187e+30
分母多项式系数分别为
1.0000e+00
3.6222e+04
6.5603e+08
7.7093e+12
6.4060e+16
3.8498e+20
1.6360e+24
4.5108e+27
6.2187e+30
Ap=6.1668e-01
As=4.0000e+01
图形为
实验四设计一个高通滤波器
%设计一个高通滤波器fp=5khz,fs=1khz,ap<=1db,as>=40db;
fp=5000;
fs=1000;
ap=1;
as=40;
wp=1/(2*pi*fp);
ws=1/(2*pi*fs);
[n,wc]=buttord(wp,ws,ap,as,'s');
disp('阶数为');
disp(n);
[num,den]=butter(n,wc,'s');
[numt,dent]=lp2hp(num,den,1);
disp('高通滤波器分子多项式系数');
fprintf('%.4e\n',numt)
disp('高通滤波器分母多项式系数');
fprintf('%.4e\n',dent)
w=[1/wp1/ws];
h1=freqs(numt,dent,w);
fprintf('Ap=%.4e\n',-20*log10(abs(h1
(1))))
fprintf('Bp=%.4e\n',-20*log10(abs(h1
(2))))
w1=[0:
200:
12000*pi];
h=freqs(numt,dent,w1);
gain=20*log10((abs(h)));
plot(w1/(2*pi),gain);
xlabel('频率');
ylabel('幅值');
输出结果:
阶数为
4
高通滤波器分子多项式系数
1.0000e+00
0.0000e+00
0.0000e+00
0.0000e+00
0.0000e+00
高通滤波器分母多项式系数
1.0000e+00
5.1920e+04
1.3478e+09
2.0497e+13
1.5585e+17
Ap=1.0977e-01
Bp=4.0000e+01
图形
实验5用FFT设计低通滤波器
%用fft变换设计低通滤波器
clear;
N=100;
n=0:
(N-1);
fs=100;%采样频率
f1=1;
f2=10;
y=sin(2*pi*f1/fs*n)+sin(2*pi*f2/fs*n);%原始信号
subplot(211);
plot(2*pi*f2/fs*n,y,'k');%显示波形
xlabel('时间');
ylabel('幅值');
title('原始信号');
ffty=fft(y);%进行快速傅里叶变换
ffty1=ffty;
ffty1(f2/(fs/N)+1)=0;%f2频率对应的幅值为零
ffty1((N-f2)/(fs/N)+1)=0;%f2/2频率对应f2的对称频率值对应幅值为零
yy=ifft(ffty1);%逆fft变换
subplot(212);
plot(2*pi*f2/fs*n,yy);
xlabel('时间');
ylabel('幅值');
title('滤波以后的低频信号');
输出图形为
实验六用FFT高通滤波器设计
%用fft变换设计低通滤波器
clear;
N=100;
n=0:
(N-1);
fs=100;%采样频率
f1=1;
f2=10;
y=sin(2*pi*f1/fs*n)+sin(2*pi*f2/fs*n);%原始信号
subplot(211);
plot(2*pi*f2/fs*n,y,'k');%显示波形
xlabel('时间');
ylabel('幅值');
title('原始信号');
ffty=fft(y);%进行快速傅里叶变换
ffty1=ffty;
ffty1(f1/(fs/N)+1)=0;%f2频率对应的幅值为零
ffty1((N-f1)/(fs/N)+1)=0;%f2/2频率对应f2的对称频率值对应幅值为零
yy=ifft(ffty1);%逆fft变换
subplot(212);
plot(2*pi*f2/fs*n,yy);
xlabel('时间');
ylabel('幅值');
title('滤波以后的高频信号');
输出图形为
实验7用双线性设计数字滤波器
%用双线性设计数字滤波器,wp=0.2pi,ws=0.6Pi,ap=2db,as=15db;
wp=0.2*pi;
ws=0.6*pi;
fs=1/2;
ap=2;
as=15;
Wp=2*fs*tan(wp/2);
Ws=2*fs*tan(ws/2);
[n,wc]=buttord(Wp,Ws,ap,as,'s');
[num,den]=butter(n,wc,'s');
[numz,denz]=bilinear(num,den,fs);
disp('分子多项式的系数');
fprintf('%.4e\n',numz);
disp('分母多项式的系数');
fprintf('%.4e\n',denz);
w=[wpws];
h=freqz(numz,denz,w);
fprintf('ap=%.4f\n',-20*log10(abs(h
(1))));
fprintf('as=%.4f\n',-20*log10(abs(h
(2))));
w=linspace(0,2*pi,1024);
h=freqz(numz,denz,w);
gain=20*log10(abs(h));
plot(w/pi,gain);
xlabel('Normalizedfrequency');
ylabel('Gain,dB');
axis([01-500]);
grid;
输出结果
分子多项式的系数
1.5777e-01
3.1555e-01
1.5777e-01
分母多项式的系数
1.0000e+00
-6.0620e-01
2.3730e-01
ap=0.3945
as=15.0000
图形为
实验8切比雪夫1型设计低通和高通滤波器
%用切比雪夫1型设计低通滤波器
%wp=2*pi*1000,ws=2*pi*2000,ap=1,as=40;
clear;
wp=2*pi*1000,ws=2*pi*2000,ap=1,as=40;
[n,wc]=cheb1ord(wp,ws,ap,as,'s');
[num,den]=cheby1(n,ap,wc,'s');
disp('分子多项式的系数');
fprintf('%.4f\n',num)
disp('分母多项式的系数');
fprintf('%.4f\n',den)
w=[wpws];
h=freqs(num,den,w);
fprintf('ap=%.4f\n',-20*log10(abs(h
(1))));
fprintf('as=%.4f\n',-20*log10(abs(h
(2))));
w=0:
200:
12000*pi;
h=freqs(num,den,w);
gain=20*log10(abs(h));
plot(w/(2*pi),gain);
输出结果
分子多项式的系数
0.0000
0.0000
0.0000
0.0000
0.0000
1202796127888840400.0000
分母多项式的系数
1.0000
5886.2145
66671782.4829
241699153902.8650
904788863911639.0000
1202796127888840400.0000
ap=1.0000
as=45.3060
图形
%用切比雪夫1型设计高通滤波器
wp=2*pi*5000,ws=2*pi*1000,ap=1,as=40;
wp=1/wp;
ws=1/ws;
[n,wc]=cheb1ord(wp,ws,ap,as,'s');
[num,den]=cheby1(n,ap,wc,'s');
[numz,denz]=lp2hp(num,den,1);
w=[1/wp1/ws];
h=freqs(numz,denz,w);
fprintf('ap=%.4e\n',-20*log10(abs(h
(1))));
fprintf('as=%.4e\n',-20*log10(abs(h
(2))));
w=0:
200:
12000*pi;
h=freqs(numz,denz,w);
gain=20*log10(abs(h));
plot(w/(2*pi),gain);
输出结果
ap=1.0000e+00
as=4.7847e+01
输出图形
实验9用切比雪夫2型设计低通和高通滤波器
%用切比雪夫2型设计低通滤波器
%wp=2*pi*1000,ws=2*pi*2000,ap=1,as=40;
clear;
wp=2*pi*1000,ws=2*pi*2000,ap=1,as=40;
[n,wc]=cheb2ord(wp,ws,ap,as,'s');
[num,den]=cheby2(n,as,wc,'s');
disp('分子多项式的系数');
fprintf('%.4f\n',num)
disp('分母多项式的系数');
fprintf('%.4f\n',den)
w=[wpws];
h=freqs(num,den,w);
fprintf('ap=%.4f\n',-20*log10(abs(h
(1))));
fprintf('as=%.4f\n',-20*log10(abs(h
(2))));
w=0:
200:
12000*pi;
h=freqs(num,den,w);
gain=20*log10(abs(h));
plot(w/(2*pi),gain);
输出结果
分子多项式的系数
0.0000
566.3919
0.0000
290688415499.9292
0.0000
29837909134910329000.0000
分母多项式的系数
1.0000
24344.5782
296168842.7942
2252800523365.8032
10820843108280358.0000
29837909134910292000.0000
ap=1.0000
as=44.1570
图形
%用切比雪夫1型设计高通滤波器
wp=2*pi*5000;
ws=2*pi*1000;
ap=1;
as=40;
wp=1/wp;
ws=1/ws;
[n,wc]=cheb2ord(wp,ws,ap,as,'s');
[num,den]=cheby2(n,as,wc,'s');
[numz,denz]=lp2hp(num,den,1);
w=[1/wp1/ws];
h=freqs(numz,denz,w);
fprintf('ap=%.4e\n',-20*log10(abs(h
(1))));
fprintf('as=%.4e\n',-20*log10(abs(h
(2))));
w=0:
200:
12000*pi;
h=freqs(numz,denz,w);
gain=20*log10(abs(h));
plot(w/(2*pi),gain);
xlabel('频率');
ylabel('幅值');
title('幅频特性曲线');
输出结果
ap=1.0000e+00
as=4.4779e+01
输出图形
实验10画一个信号的频谱图
%画频谱图
clear;
fs=1000;
f1=50;
f2=100;
f3=200;
N=100
t=0:
N-1;
data=25+22*sin(2*pi*f1/fs*t)+30*sin(2*pi*f2/fs*t)+50*sin(2*pi*f3/fs*t);%原始信号
y=fft(data);
yabs=abs(y);
n=0:
N/2;
yabs
(1)=yabs
(1)/2;
stem(n*fs/N,2*yabs(1:
N/2+1)/N);
频谱图
实验11数字高通滤波器的设计
%数字高通滤波器的设计,ws=0.2pi,wp=0.6pi,as=15,ap=2;用巴特沃斯滤波器设计。
wp=0.6*pi;
ws=0.2*pi;
ap=2;
as=15;
t=2;
fs=1/t;
wp=2/t*tan(wp/2);
ws=2/t*tan(ws/2);
wp=1/wp;
ws=1/ws;
[n,wc]=buttord(wp,ws,ap,as,'s');
[num,den]=butter(n,wc,'s');
[numg,deng]=lp2hp(num,den,1);
[numz,denz]=bilinear(numg,deng,fs);
disp('分子多项式的系数为');
fprintf('%.4e\n',numz);
disp('分母多项式的系数为');
fprintf('%.4e\n',denz);
wp=0.6*pi;
ws=0.2*pi;
w=[wpws];
h=freqz(numz,denz,w);
fprintf('ap=%f\n',-20*log10(abs(h
(1))));
fprintf('as=%f\n',-20*log10(abs(h
(2))));
w=0:
0.01:
1.2*pi;
h=freqz(numz,denz,w);
plot(w/(2*pi),20*log10(abs(h)));
输出结果
分子多项式的系数为
3.7521e-01
-7.5042e-01
3.7521e-01
分母多项式的系数为
1.0000e+00
-3.1201e-01
1.8884e-01
ap=0.394549
as=15.000000
输出图像
%数字高通滤波器的设计,ws=0.2pi,wp=0.6pi,as=15,ap=2;用切比雪夫1型滤波器设计。
wp=0.6*pi;
ws=0.2*pi;
ap=2;
as=15;
t=2;
fs=1/t;
wp=2/t*tan(wp/2);
ws=2/t*tan(ws/2);
wp=1/wp;
ws=1/ws;
[n,wc]=cheb1ord(wp,ws,ap,as,'s');
[num,den]=cheby1(n,ap,wc,'s');
[numg,deng]=lp2hp(num,den,1);
[numz,denz]=bilinear(numg,deng,fs);
disp('分子多项式的系数为');
fprintf('%.4e\n',numz);
disp('分母多项式的系数为');
fprintf('%.4e\n',denz);
wp=0.6*pi;
ws=0.2*pi;
w=[wpws];
h=freqz(numz,denz,w);
fprintf('ap=%f\n',-20*log10(abs(h
(1))));
fprintf('as=%f\n',-20*log10(abs(h
(2))));
w=0:
0.01:
1.2*pi;
h=freqz(numz,denz,w);
plot(w/(2*pi),20*log10(abs(h)));
输出结果:
分子多项式的系数为
1.7097e-01
-3.4195e-01
1.7097e-01
分母多项式的系数为
1.0000e+00
5.6036e-01
4.2134e-01
ap=2.000000
as=28.530518
输出图像
%数字高通滤波器的设计,ws=0.2pi,wp=0.6pi,as=15,ap=2;用切比雪夫2型滤波器设计。
clear;
wp=0.6*pi;
ws=0.2*pi;
ap=2;
as=15;
t=2;
fs=1/t;
wp=2/t*tan(wp/2);
ws=2/t*tan(ws/2);
wp=1/wp;
ws=1/ws;
[n,wc]=cheb2ord(wp,ws,ap,as,'s');
[num,den]=cheby2(n,as,wc,'s');
[numg,deng]=lp2hp(num,den,1);
[numz,denz]=bilinear(numg,deng,fs);
disp('分子多项式的系数为');
fprintf('%.4e\n',numz);
disp('分母多项式的系数为');
fprintf('%.4e\n',denz);
wp=0.6*pi;
ws=0.2*pi;
w=[wpws];
h=freqz(numz,denz,w);
fprintf('ap=%f\n',-20*log10(abs(h
(1))));
fprintf('as=%f\n',-20*log10(abs(h
(2))));
w=0:
0.01:
1.2*pi;
h=freqz(numz,denz,w);
plot(w/(2*pi),20*log10(abs(h)));
输出结果
分子多项式的系数为
3.2784e-01
-4.1044e-01
3.2784e-01
分母多项式的系数为
1.0000e+00
1.5646e-01
2.2258e-01
ap=2.000000
as=20.237224
输出图像
%模拟带通滤波器的设计,wp1=6,wp2=8,ws1=4,ws2=11,ap=1.as=32;
clear;
wp1=6,wp2=8,ws1=4,ws2=11,ap=1,as=32;
b=wp2-wp1;
w02=wp1*wp2;
ws1=(ws1*ws1-w02)/(b*ws1);
ws2=(ws2*ws2-w02)/(b*ws2);
ws=min(abs(ws1),abs(ws2));
wp=1;
[n,wc]=buttord(wp,ws,ap,as,'s');
[num,den]=butter(n,wc,'s');
[num,den]=lp2bp(num,den,sqrt(w02),b);
disp('分子多项式的系数');
fprintf('%.4e\n',num);
disp('分母多项式的系数');
fprintf('%.4e\n',den);
w=[wpws];
h=freqs(num,den,w);
fprintf('ap=%f\n',-20*log10(abs(h
(1))));
fprintf('as=%f\n',-20*log10(abs(h
(2))));
w=3:
0.1:
12;
h=freqs(num,den,w);
plot(w,20*log10(abs(h)));
wp1=6,wp2=8,ws1=4,ws2=11;
w=[ws1wp1wp2ws2];
set(gca,'xti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 上机 实验 MATLAB 程序 结果
![提示](https://static.bdocx.com/images/bang_tan.gif)