数字信号处理实验指导书程序.docx
- 文档编号:8827798
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:13
- 大小:18.19KB
数字信号处理实验指导书程序.docx
《数字信号处理实验指导书程序.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验指导书程序.docx(13页珍藏版)》请在冰豆网上搜索。
数字信号处理实验指导书程序
数字信号处理实验指导书
课程组
扬州大学信息工程学院
2013年10月
2信号采样与重建-matlab仿真
2.4实验内容
实验内容一
MATLAB参考程序和仿真内容
%*******************************************************************%
%f—余弦信号的频率
%M—基2FFT幂次数N=2^M为采样点数,这样取值是为了便于作基2的FFT分析
%2.采样频率Fs
%*******************************************************************%
functionsamples(f,Fs,M)
N=2^M;%fft点数=取样总点数
Ts=1/Fs;%取样时间间隔
T=N*Ts;%取样总时间=取样总点数*取样时间间隔
n=0:
N-1;
t=n*Ts;
Xn=cos(2*f*pi*t);
subplot(2,1,1);
stem(t,Xn);
axis([0T1.1*min(Xn)1.1*max(Xn)]);
xlabel('t-->');
ylabel('Xn');
Xk=abs(fft(Xn,N));
subplot(2,1,2);
stem(n,Xk);
axis([0N1.1*min(Xk)1.1*max(Xk)]);
xlabel('frequency-->');
ylabel('!
Xk!
');
%*******************************************************************%
实验内容二
MATLAB参考程序和仿真内容
%信号取样与重构
%k=1临界取样0
display('Pleaseinputthevalueofk');
k=input('k=');
wm=1;%信号带宽
Ts=k*pi/wm;%取样间隔
ws=2*pi/Ts;%取样角频率
wc=ws/2;%为简便,滤波器截止频率wc=ws/2
n=-10:
10;%定义取样点的数量
m=fix(length(n)/2);%单边取样周期数,fix函数的功能为取整
nTs=n*Ts;%计算每个取样点
dt=0.05;
t=-m*Ts:
dt:
m*Ts;
%Sa(t)信号取样
f=sinc(nTs/pi);%计算Sa(t)在取样点处的函数值,得到取样信号
%Sa(t)信号重构
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
%Sa(t)包络线
f2=sinc(t/pi);
subplot(311);
stem(nTs,f);%绘制取样信号
holdon
plot(t,f2,'r:
');%绘制包络线
xlabel('t');
title('对sa(t)信号进行取样');
axis([-m*Tsm*Ts-0.51.2]);
holdoff
subplot(312);
h1=plot(t,fa);%绘制重构信号
holdon
fori=-m*Ts:
Ts:
m*Ts
ft=sinc(i/pi)*sinc(wc/pi*(t-i));
h2=plot(t,ft,'m:
');%绘制重构信号的各个分量
holdon
yy=sinc(i/pi);
yy1=yy:
yy;
plot(i,yy1,'o');
end
xlabel('t');
title('重构信号');
axis([-m*Tsm*Ts-0.51.2]);
legend([h1,h2],'重构信号','分信号');
holdoff
subplot(313);
%计算原信号和重构信号之间的误差
error=abs(fa-f2);
plot(t,error);
axis([-m*Tsm*Tsmin(error)max(error)+0.1*max(error)]);
xlabel('t');
ylabel('error(t)');
%End
4离散傅里叶变换及其快速算法—matlab仿真
4.4实验内容
MATLAB参考程序和仿真内容
%*******************************************************************%
function[x]=ffts(mode,M)
Nfft=2^M;
x=zeros(1,Nfft);%定义一个长度为Nfft的一维全0数组
ifmode==1forn=0:
Nfft-1x(n+1)=sin(2*pi*n/Nfft);end
end%定义一个长度为Nfft的单周期正弦序列
ifmode==2forn=0:
Nfft-1x(n+1)=sin(4*pi*n/Nfft);end
end%定义一个长度为Nfft的双周期正弦序列
ifmode==3forn=0:
Nfft/2-1x(n+1)=sin(4*pi*n/Nfft);end
end%定义一个长度为Nfft/2的正弦序列,后面一半为0序列。
ifmode==4forn=0:
Nfft-1x(n+1)=square(2*pi*n/Nfft);end
end
ifmode==5forn=0:
Nfft-1x(n+1)=square(2*pi*n/Nfft);end
end
ifmode==6forn=0:
Nfft/2-1x(n+1)=square(4*pi*n/Nfft);end
end
n=0:
Nfft-1;
subplot(2,1,1);
stem(n,x);
axis([0Nfft-11.1*min(x)1.1*max(x)]);
xlabel('Points-->');
ylabel('x(n)');
X=abs(fft(x,Nfft));
subplot(2,1,2);
stem(n,X);
axis([0Nfft-11.1*min(X)1.1*max(X)]);
xlabel('frequency-->');
ylabel('!
X(k)!
');
%*******************************************************************%
实验内容二
MATLAB参考程序和仿真内容
k=8;
n1=[0:
1:
19];
xa1=sin(2*pi*n1/k);
subplot(2,2,1)
plot(n1,xa1)
xlabel('t/T');ylabel('x(n)');
xk1=fft(xa1);xk1=abs(xk1);
subplot(2,2,2)
stem(n1,xk1)
xlabel('k');ylabel('X(k)');
n2=[0:
1:
15];
xa2=sin(2*pi*n2/k);
subplot(2,2,3)
plot(n2,xa2)
xlabel('t/T');ylabel('x(n)');
xk2=fft(xa2);xk2=abs(xk2);
subplot(2,2,4)
stem(n2,xk2)
xlabel('k');ylabel('X(k)');
实验内容三相关分析
MATLAB参考程序和仿真内容
x=[13-112331];
y=[21-1120-13];
k=length(x);
xk=fft(x,2*k);
yk=fft(y,2*k);
rm=real(ifft(conj(xk).*yk));
rm=[rm(k+2:
2*k)rm(1:
k)];
m=(-k+1):
(k-1);
stem(m,rm)
xlabel('m');ylabel('幅度');
MATLAB参考程序和仿真内容
x=[23521-100123530-1-2012];
y=[000023521-100123530-1-2012];
k=length(y);
e=rand(1,k)-0.5;
y=y+e;
xk=fft(x,2*k);
yk=fft(y,2*k);
rm=real(ifft(conj(xk).*yk));
rm=[rm(k+2:
2*k)rm(1:
k)];
m=(-k+1):
(k-1);
stem(m,rm)
xlabel('m');ylabel('幅度');
6IIR滤波器的设计方法—matlab仿真
6.4实验内容
实验内容一
MATLAB参考程序和仿真内容
%*******************************************************************%
%mode:
1--巴特沃斯低通;2--巴特沃斯高通;3--巴特沃斯带通;4--巴特沃斯带阻
%5--契比雪夫低通;6--契比雪夫高通;7--契比雪夫带通;8--契比雪夫带阻
%fp1,fp2:
通带截止频率,当高通或低通时只有fp1有效
%fs1,fs2:
阻带截止频率,当高通或低通时只有fs1有效
%rp:
通带波纹系数
%as:
阻带衰减系数
%sample:
采样率
%h:
返回设计好的滤波器系数
%*******************************************************************%
function[b,a]=iirfilt(mode,fp1,fp2,fs1,fs2,rp,as,sample)
wp1=2*fp1/sample;wp2=2*fp2/sample;
ws1=2*fs1/sample;ws2=2*fs2/sample;
%得到巴特沃斯滤波器的最小阶数N和3bd频率wn
ifmode<3[N,wn]=buttord(wp1,ws1,rp,as);
elseifmode<5[N,wn]=buttord([wp1wp2],[ws1ws2],rp,as);
%得到契比雪夫滤波器的最小阶数N和3bd频率wn
elseifmode<7[N,wn]=cheb1ord(wp1,ws1,rp,as);
else[N,wn]=cheblord([wp1wp2],[ws1ws2],rp,as);
end
%得到滤波器系数的分子b和分母a
ifmode==1[b,a]=butter(N,wn);end
ifmode==2[b,a]=butter(N,wn,'high');end
ifmode==3[b,a]=butter(N,wn);end
ifmode==4[b,a]=butter(N,wn,'stop');end
ifmode==5[b,a]=cheby1(N,rp,wn);end
ifmode==6[b,a]=cheby1(N,rp,wn,'high');end
ifmode==7[b,a]=cheby1(N,rp,wn);end
ifmode==8[b,a]=cheby1(N,rp,wn,'stop');end
%set(gcf,'menubar',menubar);
freq_response=freqz(b,a);
magnitude=20*log10(abs(freq_response));
m=0:
511;
f=m*sample/(2*511);
subplot(3,1,1);plot(f,magnitude);grid;%幅频特性
axis([0sample/21.1*min(magnitude)1.1*max(magnitude)]);
ylabel('Magnitude');xlabel('Frequency-->');
phase=angle(freq_response);
subplot(3,1,2);plot(f,phase);grid;%相频特性
axis([0sample/21.1*min(phase)1.1*max(phase)]);
ylabel('Phase');xlabel('Frequency-->');
h=impz(b,a,32);%32点的单位函数响应
t=1:
32;
subplot(3,1,3);stem(t,h);grid;
axis([0321.2*min(h)1.1*max(h)]);
ylabel('h(n)');xlabel('n-->');
%*******************************************************************%
实验内容二
1数字低通滤波器设计
MATLAB参考程序和仿真内容
[B,A]=butter(3,2*pi*1000,'s');
[num1,den1]=impinvar(B,A,4000);
[h1,w]=freqz(num1,den1);
[B,A]=butter(3,2/0.00025,'s');
[num2,den2]=bilinear(B,A,4000);
[h2,w]=freqz(num2,den2);
f=w/pi*2000;
plot(f,abs(h1),'-.',f,abs(h2),'-');
grid;
xlabel('频率/Hz')
ylabel('幅值/dB')
2数字高通滤波器设计
MATLAB参考程序和仿真内容
wc=2*1000*tan(2*pi*400/(2*1000));
wt=2*1000*tan(2*pi*317/(2*1000));
[N,wn]=cheb1ord(wc,wt,0.5,19,'s');
[B,A]=cheby1(N,0.5,wn,'high','s');
[num,den]=bilinear(B,A,1000);
[h,w]=freqz(num,den);
f=w/pi*500;
plot(f,20*log10(abs(h)));
axis([0,500,-80,10]);
grid;
xlabel('')
ylabel('幅度/dB')
3数字带通滤波器设计
MATLAB参考程序和仿真内容
w1=2*400*tan(2*pi*90/(2*400));
w2=2*400*tan(2*pi*110/(2*400));
wr=2*400*tan(2*pi*120/(2*400));
[N,wn]=buttord([w1w2],[0wr],3,10,'s');
[B,A]=butter(N,wn,'s');
[num,den]=bilinear(B,A,400);
[h,w]=freqz(num,den);
f=w/pi*200;
plot(f,20*log10(abs(h)));
axis([40,160,-30,10]);
grid;
xlabel('频率/kHz')
ylabel('幅度/dB')
4 数字带阻滤波器设计
MATLAB参考程序和仿真内容
w1=2*1000*tan(2*pi*95/(2*1000));
w2=2*1000*tan(2*pi*105/(2*1000));
[B,A]=butter(1,[w1,w2],'stop','s');
[num,den]=bilinear(B,A,1000);
[h,w]=freqz(num,den);
f=w/pi*500;
plot(f,20*log10(abs(h)));
axis([50,150,-30,10]);
grid;
xlabel('频率/kHz')
ylabel('幅度/dB')
8FIR滤波器的设计方法-窗函数法matlab仿真
8.4实验内容
MATLAB参考程序和仿真内容
%*******************************************************************%
%mode:
模式(1--高通;2--低通;3--带通;4--带阻)
%n:
阶数,加窗的点数为阶数加1
%fp:
高通和低通时指示截止频率,带通和带阻时指示下限频率
%fs:
带通和带阻时指示上限频率
%window:
加窗(1--矩形窗;2--三角窗;3--巴特利特窗;4--汉明窗;
%5--汉宁窗;6--布莱克曼窗;7--凯泽窗;8--契比雪夫窗)
%r:
代表加chebyshev窗的r值和加kaiser窗时的beta值
%sample:
采样率
%h:
返回设计好的FIR滤波器系数
%*******************************************************************%
%mode:
模式(1--高通;2--低通;3--带通;4--带阻)
%n:
阶数,加窗的点数为阶数加1
%fp:
高通和低通时指示截止频率,带通和带阻时指示下限频率
%fs:
带通和带阻时指示上限频率
%window:
加窗(1--矩形窗;2--三角窗;3--巴特利特窗;4--汉明窗;
%5--汉宁窗;6--布莱克曼窗;7--凯泽窗;8--契比雪夫窗)
%r:
代表加chebyshev窗的r值和加kaiser窗时的beta值
%sample:
采样率
%h:
返回设计好的FIR滤波器系数
%*******************************************************************%
function[h]=usefir1(mode,n,fp,fs,window,r,sample)
ifwindow==1w=boxcar(n+1);end
ifwindow==2w=triang(n+1);end
ifwindow==3w=bartlett(n+1);end
ifwindow==4w=hamming(n+1);end
ifwindow==5w=hanning(n+1);end
ifwindow==6w=blackman(n+1);end
ifwindow==7w=kaiser(n+1);end
ifwindow==8w=chebwin(n+1);end
wp=2*fp/sample;
ws=2*fs/sample;
ifmode==1h=fir1(n,wp,'high',w);end
ifmode==2h=fir1(n,wp,'low',w);end
ifmode==3h=fir1(n,[wp,ws],w);end
ifmode==4h=fir1(n,[wp,ws],'stop',w);end
%set(gcf,'menubar',menubar);
m=0:
n;
subplot(3,1,1);stem(m,h);grid;%单位函数响应
axis([0n1.1*min(h)1.1*max(h)]);
ylabel('h(n)');xlabel('Points-->');
freq_response=freqz(h,1);
Magnitude=20*log10(abs(freq_response));
M=0:
511;
f=M*sample/(2*511);
subplot(3,1,2);plot(f,Magnitude);grid;%幅频特性
axis([0sample/21.1*min(Magnitude)1.1*max(Magnitude)]);
ylabel('Magnitude');xlabel('Frequency-->');
phase=angle(freq_response);
subplot(3,1,3);plot(f,phase);grid;%相频特性
axis([0sample/21.1*min(phase)1.1*max(phase)]);
ylabel('Phase');xlabel('Frequency-->');
%*******************************************************************%
10FIR滤波器的设计方法-频率采样法matlab仿真
10.4实验内容
MATLAB参考程序和仿真内容
%*******************************************************************%
%n:
阶数,加窗时的点数为阶数加1
%fp:
高通和低通时指示截止频率,带通和带阻时指示下限频率
%fs:
带通和带阻时指示上限频率
%Window:
加窗(1--矩形窗;2--三角窗;3--巴特利特窗;4--汉明窗;
%5--汉宁窗;6--布莱克曼窗;7--凯泽窗;8--契比雪夫窗)
%r代表加chebyshev窗的r值和加kaiser窗时的beta值
%sample:
采样率
%h:
返回设计好的FIR滤波器系数
%*******************************************************************%
function[h]=usefir2(n,f,m,window,r,sample)
freq=2*f/sample;
ifwindow==1w=boxcar(n+1);end;
ifwindow==2w=triang(n+1);end;
ifwindow==3w=Bartlett(n+1);end;
ifwindow==4w=hamming(n+1);end;
ifwindow==5w=hanning(n+1);end;
ifwindow==6w=Blackman(n+1);end;
ifwindow==7w=Kaiser(n+1,r);end;
ifwindow==8w=chebwin(n+1,r);end
h=fir2(n,freq,m,w);
%set(gcf,/menubar/,menubar);
m=0:
n;
subplot(3,1,1);stem(m,h);grid;%单位函数响应
axis([0n1.1*min(h)1.1*max(h)]);
ylabel('h(n)');xlabel('Points-->');
freq_response=freqz(h,1);
magnitude=20*log10(abs(freq_response));
m=0:
511;f=m*sample/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 指导书 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)