数字信号Matable实验指导
- 格式:doc
- 大小:413.00 KB
- 文档页数:19
电工电子实验中心实验指导书数字信号处理实验教程二○○九年三月高等学校电工电子实验系列数字信号处理实验教程主编石海霞周玉荣攀枝花学院电气信息工程学院电工电子实验中心内容简介数字信号处理是一门理论与实践紧密联系的课程,适当的上机实验有助于深入理解和巩固验证基本理论知识,了解并体会数字信号处理的CAD手段和方法,锻炼初学者用计算机和MATLAB语言及其工具箱函数解决数字信号处理算法的仿真和滤波器设计问题的能力。
本实验指导书结合数字信号处理的基本理论和基本内容设计了八个上机实验,每个实验对应一个主题内容,包括常见离散信号的MATLAB产生和图形显示、离散时间系统的时域分析、离散时间信号的DTFT、离散时间信号的Z变换、离散傅立叶变换DFT、快速傅立叶变换FFT及其应用、基于MATLAB的IIR和FIR数字滤波器设计等。
此外,在附录中,还简单介绍了MATLAB的基本用法。
每个实验中,均给出了实验方法和步骤,还有部分的MATLAB程序,通过实验可以使学生掌握数字信号处理的基本原理和方法。
目录绪论 (1)实验一常见离散信号的MATLAB产生和图形显示 (2)实验二离散时间系统的时域分析 (6)实验三离散时间信号的DTFT (9)实验四离散时间信号的Z变换 (14)实验五离散傅立叶变换DFT (18)实验六快速傅立叶变换FFT及其应用 (24)实验七基于MATLAB的IIR数字滤波器设计 (30)实验八基于MATLAB的FIR数字滤波器设计 (33)附录 (37)参考文献 (40)绪论绪论随着电子技术迅速地向数字化发展,《数字信号处理》越来越成为广大理工科,特别是IT领域的学生和技术人员的必修内容。
数字信号处理是把信号用数字或符号表示成序列,通过计算机或通用(专用)信号处理设备,用数值计算方法进行各种处理,达到提取有用信息便于应用的目的。
数字信号处理的理论和技术一出现就受到人们的极大关注,发展非常迅速。
而且随着各种电子技术及计算机技术的飞速发展,数字信号处理的理论和技术还在不断丰富和完善,新的理论和技术层出不穷。
实验二 IIR 滤波器设计一、 实验目的1、 掌握冲激响应法和双线性变换法设计IIR 滤波器的原理及具体设计方法,熟悉用双线性设计法设计低通、带通和高通IIR 数字滤波器的计算机程序。
2、 熟悉模拟Butterworth 滤波器的设计,掌握冲激响应法和双线性变换法设计数字IIR 滤波器的方法。
二、 实验内容1、 不同阶次模拟巴特沃兹滤波器的频率响应如下:由图可知,不同阶次的所对应的滤波器的幅度走向基本一样,但是过渡带却有着明显的不同,阶次越高,滤波器的过渡带越窄。
2、根据模拟滤波器指标,设计低通巴特沃兹滤波器设计指标为:通带截止频率f p = 5kHz, 通带最大衰减 ɑp =2dB ,阻带截止频率 f s = 12kHz, 阻带最小衰减ɑs =30dB 。
设计程序如下:>> clear all;>> fp=5e3; >> ap=2;0.51 1.520.51w/wc -- 归一化频率幅度谱巴特沃兹滤波器幅度谱 N=300.51 1.5200.51w/wc -- 归一化频率幅度谱巴特沃兹滤波器幅度谱 N=50.51 1.5200.51w/wc -- 归一化频率幅度谱巴特沃兹滤波器幅度谱 N=1000.51 1.520.51w/wc -- 归一化频率幅度谱巴特沃兹滤波器幅度谱 N=15>> fs=12e3;>> as=30;>> %*******求阶次N********%>> k_sp=sqrt(10^(as/10) - 1)/sqrt(10^(ap/10) - 1);>> a_sp = 2*pi*fs/(2*pi*fp);>> N=ceil( log(k_sp)/log(a_sp) );>> p=zeros(1,N);>> for i=1:N;k = i-1;p(i) = exp( j*pi/2 + j*pi*(2*k+1)/2/N ) ;end>> z=[];>> [b1 a1] = zp2tf( z, p, 1 );>> fp1=fp* ( 10^(ap/10)-1 )^(-1/2/N) ;>> fs1=fs* ( 10^(as/10)-1 )^(-1/2/N);>> figure(1);>> x=[ 0:50:1.5*fs ] ;>> [H1 ]=freqs(b1, a1, x/fp1);>> [H2 ]=freqs(b1, a1,x/fs1);>> plot( x, 20*log10(abs(H1)));>> xlabel( '频率/Hz' );>> ylabel( '振幅/db' );>> title( ['巴特沃兹滤波器对数幅度谱 N=',num2str(N)] ); >> figure(2);>> x1=[ 0: 0.01 :2 ];>> [H3 ]=freqs(b1, a1, x1);>> plot( x1 , abs(H3) );>> xlabel('归一化频率');>> ylabel('幅度');>> title( '归一化之后的低通巴特沃兹滤波器的频率响应:' );归一化之前低通巴特沃兹滤波器的频率响应:归一化之后的低通巴特沃兹滤波器的频率响应为:3、已知模拟滤波器传输函数H(s)为20.5012()0.64490.7079H s s s =++ 按照不同采样频率Fs1=1Hz, Fs2=10Hz 使用脉冲响应不变法将H(s)转换为H(z)数字IIR 滤波器。
《数字信号处理》MATLAB实验指导实验一:离散时间信号和离散时间系统一、 实验目的:1、 以MA TLAB 为工具学习离散时间信号的图形表示;2、 以课本提供的例程,练习、理解典型离散信号及其基本运算;3、 通过MATLAB 仿真简单的离散时间系统,研究其时域特性;4、 加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。
二、 实验内容:1、 典型序列的产生与显示;2、 序列的简单运算;3、 复合和复杂信号的产生与显示;4、 离散时间系统的仿真:线性和非线性系统、时变和非时变系统的仿真;5、 线性时不变离散时间系统:系统冲激响应、卷积运算、系统的级联、系统的稳定性;三、实验例程:1、 参照课本例程产生下列序列,并用plot 、stem 好人subplot 命令绘出其图形: ①单位取样序列()n δ;②单位阶跃序列()n μ;③矩形序列RN(n),④斜变序列()n n μ。
所需输入的数据是产生序列的长度L 和抽样频率F T 。
% Program P1_1% Generation of a Unit Sample Sequenceclf;% Generate a vector from -10 to 20n = -10:20;% Generate the unit sample sequenceu = [zeros(1,10) 1 zeros(1,20)];% Plot the unit sample sequencestem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([-10 20 0 1.2]);2、 编写MATLAB 实指数序列程序,% Program P1_3% Generation of a real exponential sequenceclf;n = 0:35; a = 1.2; K = 0.2;x = K*a.^n;stem(n,x);xlabel('Time index n');ylabel('Amplitude');3、编写产生swept frequency sinusoidal 序列的程序。
《数字信号处理》MATLAB实验指导实验一:离散时间信号和离散时间系统一、实验目的:1、以MATLAB 为工具学习离散时间信号的图形表示;2、以课本提供的例程,练习、理解典型离散信号及其基本运算;3、通过MATLAB 仿真简单的离散时间系统,研究其时域特性;4、加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。
二、实验内容:1、典型序列的产生与显示;2、序列的简单运算;3、复合和复杂信号的产生与显示;4、离散时间系统的仿真:线性和非线性系统、时变和非时变系统的仿真;5、线性时不变离散时间系统:系统冲激响应、卷积运算、系统的级联、系统的稳定性;三、实验例程:1、参照课本例程产生下列序列,并用plot 、stem 好人subplot 命令绘出其图形:①单位取样序列()n δ;②单位阶跃序列()n μ;③矩形序列RN(n),④斜变序列()n n μ。
所需输入的数据是产生序列的长度L 和抽样频率F T 。
%Program P1_1%Generation of a Unit Sample Sequence clf;%Generate a vector from -10to 20n =-10:20;%Generate the unit sample sequence u =[zeros(1,10)1zeros(1,20)];%Plot the unit sample sequence stem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([-102001.2]);2、编写MATLAB 实指数序列程序,%Program P1_3%Generation of a real exponential sequence clf;n =0:35;a =1.2;K =0.2;x =K*a.^n;stem(n,x);xlabel('Time index n');ylabel('Amplitude');3、编写产生swept frequency sinusoidal序列的程序。
数字信号MATLAB仿真实验数字信号MATLAB仿真实验一.实验目的1.通过本次实验熟悉数字信号处理的方波和三角波的产生2.对FFT加强理解和直观地认识3.理解并掌握频谱分析和谐波分析4.对噪声对信号的影响认识二.实验内容5.自编程序得到一个方波信号(f=50Hz,幅值为1,1 ,各半个周期),对其一个周期分别采样256点和1024点,利用光盘所附的基于Matlab 语言所编FFT程序或自编FFT程序做谐波分析分析,并与理论分析结果对照(注意FFT计算频谱与谐波分析的区别)。
6.对三角波信号(可以由方波信号求导得到)重复作业一的各项要求。
7.对一、二信号叠加一个白噪声信号(均值为零,方差为0.2)所构成的随机信号用FFT进行频谱分析8.对以上结果进行讨论三.实验程序1.方波分析cclearT=0.02,l=0.5,hu=1,hd=-1; %T是周期,l为占空比,hu为上幅度,hd为下幅度t=[0:0.001:2]; %显示连续图形的采样点for i=1:length(t) %生成方波if rem(t(i),T)<t*l< p="">y(i)=hu;elsey(i)=hd;endendn=0:0.02/256:(0.02-0.02/256); %256采样点for i=1:length(n) %生成方波取256采样点值if rem(n(i),T)<t*l< p="">yn(i)=hu;elseyn(i)=hd;endendn2=0:0.02/1024:(0.02-0.02/1024);for i=1:length(n2) %生成方波取1024采样点值if rem(n2(i),T)<t*l< p="">yn2(i)=hu;elseyn2(i)=hd;endendfigure(1)subplot(3,1,1)stairs(t,y); %画方波xlabel('时间t'),ylabel('幅度y'),grid on; subplot(3,1,2); %画256采样图stem(n,yn,'.');xlabel('采样时间t'),ylabel('幅度y'),grid on; subplot(3,1,3); %画1024采样图stem(n2,yn2,'.');xlabel('采样时间t'),ylabel('幅度y'),grid on; ynfft=fft(yn); %256点FFTynfft2=fft(yn2); %1024点FFTmagyn=abs(ynfft); %256点幅度谱,对数幅度谱,相位谱lgmagyn=20*log10(abs(ynfft));argyn=angle(ynfft);magyn2=abs(ynfft2); %1024点幅度谱,对数幅度谱,相位谱lgmagyn2=20*log10(abs(ynfft2));argyn2=angle(ynfft2);nf=0:2*pi/256:(2*pi-2*pi/256); %计算FFT各点频率nf2=0:2*pi/1024:(2*pi-2*pi/1024);ind1=find(magyn); %取fft后的幅值非零频率分量magynxb=magyn(:,ind1) ;ind2=find(magyn2);magynxb2=magyn2(:,ind2);if ind1(1)~=1 %判断是否有直流分量,并求基波频率%调整各各次谐波的存储在相应位置bf1=gcd(ind1(1)-1,ind1(2)-1)*2*pi/256;elsebf1=gcd(ind1(2)-1,ind1(3)-1)*2*pi/256;magynxb=magyn(:,2:ind1) ;ind11=ind1(2:length(ind1))-1;endif ind2(1)~=1bf2=gcd(ind2(1)-1,ind2(2)-1)*2*pi/1024;elsebf2=gcd(ind2(2)-1,ind2(3)-1)*2*pi/256;magynxb2=magyn2(2:1024); %去掉直流分量ind2=ind2(2:length(ind2))-1endfigure(2) %画各谐波的幅度谱subplot(2,1,1)stem(ind1-1,magynxb,'.');xlabel('谐波频率'),ylabel('幅值'),grid on;subplot(2,1,2)stem(ind2-1,magynxb2,'.');xlabel('谐波频率'),ylabel('幅值'),grid on;learT=0.02,l=0.5,hu=1,hd=-1; %T是周期,l为占空比,hu为上幅度,hd为下幅度t=[0:0.001:2]; %显示连续图形的采样点for i=1:length(t) %生成方波if rem(t(i),T)<t*l< p="">y(i)=hu;elsey(i)=hd;endendn=0:0.02/256:(0.02-0.02/256); %256采样点for i=1:length(n) %生成方波取256采样点值if rem(n(i),T)<t*l< p="">yn(i)=hu;elseyn(i)=hd;endendn2=0:0.02/1024:(0.02-0.02/1024);for i=1:length(n2) %生成方波取1024采样点值if rem(n2(i),T)<t*l< p="">yn2(i)=hu;elseyn2(i)=hd;endendfigure(1)subplot(3,1,1)stairs(t,y); %画方波xlabel('时间t'),ylabel('幅度y'),grid on;subplot(3,1,2); %画256采样图stem(n,yn,'.');xlabel('采样时间t'),ylabel('幅度y'),grid on;subplot(3,1,3); %画1024采样图stem(n2,yn2,'.');xlabel('采样时间t'),ylabel('幅度y'),grid on;ynfft=fft(yn); %256点FFTynfft2=fft(yn2); %1024点FFTmagyn=abs(ynfft); %256点幅度谱,对数幅度谱,相位谱lgmagyn=20*log10(abs(ynfft));argyn=angle(ynfft);magyn2=abs(ynfft2); %1024点幅度谱,对数幅度谱,相位谱lgmagyn2=20*log10(abs(ynfft2));argyn2=angle(ynfft2);nf=0:2*pi/256:(2*pi-2*pi/256); %计算FFT各点频率nf2=0:2*pi/1024:(2*pi-2*pi/1024);ind1=find(magyn); %取fft后的幅值非零频率分量magynxb=magyn(:,ind1) ;ind2=find(magyn2);magynxb2=magyn2(:,ind2);if ind1(1)~=1 %判断是否有直流分量,并求基波频率bf1=gcd(ind1(1)-1,ind1(2)-1)*2*pi/256;else ind1bf1=gcd(ind1(2)-1,ind1(3)-1)*2*pi/256;magynxb=magyn(:,2:ind1) ;endif ind2(1)~=1bf2=gcd(ind2(1)-1,ind2(2)-1)*2*pi/1024; elsebf2=gcd(ind2(2)-1,ind2(3)-1)*2*pi/256; magynxb2=magyn2(2:1024); %去掉直流分量endfigure(2) %画各谐波的幅度谱subplot(2,1,1)stem(ind1,magynxb,'.');xlabel('频率'),ylabel('幅值'),grid on; subplot(2,1,2)stem(ind2,magynxb2,'.');xlabel('频率'),ylabel('幅值'),grid on;2.三角波分析clearT=0.02,l=0.5,hu=1,hd=-1; %T是周期,l为占空比,hu为上幅度,hd为下幅度t=[0:0.0001:2]; %显示连续图形的采样点for i=1:length(t) %生成三角波if rem(t(i),T)<t*l< p="">y(i)=-(hu-hd)/(T*l)*rem(t(i),T)+hu;elsey(i)=(hu-hd)/(T*(1-l))*(rem(t(i),T)-l*T)+hd;endendn=0:0.02/256:(0.02-0.02/256); %256采样点for i=1:length(n) %生成256点采样值if rem(n(i),T)<t*l< p="">yn(i)=-(hu-hd)/(T*l)*rem(n(i),T)+hu;elseyn(i)=(hu-hd)/(T*(1-l))*(rem(n(i),T)-l*T)+hd;endendn2=0:0.02/1024:(0.02-0.02/1024);for i=1:length(n2) %生成1024点采样值if rem(n2(i),T)<t*l< p="">yn2(i)=-(hu-hd)/(T*l)*rem(n2(i),T)+hu;elseyn2(i)=(hu-hd)/(T*(1-l))*(rem(n2(i),T)-l*T)+hd;endendfigure(1)subplot(3,1,1)plot(t,y); %画三角波xlabel('时间t'),ylabel('幅度y'),grid on;subplot(3,1,2); %画256采样图stem(n,yn,'.');xlabel('采样时间t'),ylabel('幅度y'),grid on;subplot(3,1,3); %画1024采样图stem(n2,yn2,'.');xlabel('采样时间t'),ylabel('幅度y'),grid on;ynfft=fft(yn); %256点FFTynfft2=fft(yn2); %1024点FFTmagyn=abs(ynfft); %256点幅度谱,对数幅度谱,相位谱lgmagyn=20*log10(abs(ynfft));argyn=angle(ynfft);magyn2=abs(ynfft2); %1024点幅度谱,对数幅度谱,相位谱lgmagyn2=20*log10(abs(ynfft2));argyn2=angle(ynfft2);nf=0:2*pi/256:(2*pi-2*pi/256); %计算FFT各点频率nf2=0:2*pi/1024:(2*pi-2*pi/1024);ind1=find(magyn); %取fft后的幅值非零频率分量magynxb=magyn(:,ind1) ;ind2=find(magyn2);magynxb2=magyn2(:,ind2);if ind1(1)~=1 %判断是否有直流分量,并求基波频率bf1=gcd(ind1(1)-1,ind1(2)-1)*2*pi/256;elsebf1=gcd(ind1(2)-1,ind1(3)-1)*2*pi/256;magynxb=magyn(2:length(magyn)) ;ind11=ind1(2:length(ind1));endif ind2(1)~=1bf2=gcd(ind2(1)-1,ind2(2)-1)*2*pi/1024;elsebf2=gcd(ind2(2)-1,ind2(3)-1)*2*pi/256;magynxb2=magyn2(2:length(magyn2)); %去掉直流分量ind22=ind2(2:length(ind2));endfigure(2) %画各谐波的幅度谱subplot(2,1,1)stem(ind11-1,magynxb,'.');xlabel('频率'),ylabel('幅值'),grid on;subplot(2,1,2)stem(ind22-1,magynxb2,'.');xlabel('频率'),ylabel('幅值'),grid on;叠加噪声分析3.叠加了噪声的程序TclearT=0.02,l=0.5,hu=1,hd=-1; %T是周期,l为占空比,hu为上幅度,hd为下幅度t=[0:0.0001:2]; %显示连续图形的采样点for i=1:length(t) %生成方波if rem(t(i),T)<t*l< p="">yrect(i)=hu;elseyrect(i)=hd;endendfor i=1:length(t) %生成三角波if rem(t(i),T)<t*l< p="">ytri(i)=-(hu-hd)/(T*l)*rem(t(i),T)+hu;elseytri(i)=(hu-hd)/(T*(1-l))*(rem(t(i),T)-l*T)+hd;endendnoise=sqrt(0.2)*randn(1,length(t));%noise=sqrt(12*0.2)*rand(1,length(t))y=yrect+noise;y2=ytri+noise;n=0:0.02/1024:(0.02-0.02/1024); %1024采样点n2=nfor i=1:length(n) %生成方波取1024采样点值if rem(n(i),T)<t*l< p="">yn(i)=hu;elseyn(i)=hd;endendfor i=1:length(n2) %生成1024点三角波采样值if rem(n2(i),T)<t*l< p="">yn2(i)=-(hu-hd)/(T*l)*rem(n2(i),T)+hu;elseyn2(i)=(hu-hd)/(T*(1-l))*(rem(n2(i),T)-l*T)+hd;endendn=[0:0.02/1024:0.02-0.02/1024];n2=n;noisen=sqrt(0.2)*randn(1,length(n));%noise=sqrt(12*0.2)*rand(1,length(n))yn=yn+noisen;yn2=yn2+noisen;figure(1)subplot(4,2,1)stairs(t,yrect)ylabel('方波图'),grid on;subplot(4,2,5)plot(t,y);ylabel('叠加了噪声的方波图'),grid on;subplot(4,2,7);stem(n,yn,'.')ylabel('叠加了噪声的方波图的抽样'),grid on;subplot(4,2,3)plot(t,noise)ylabel('正态分布噪声'),grid on;subplot(4,2,4)ylabel('噪声的分布检测'),grid on;hist(noise,50)subplot(4,2,2)stairs(t,ytri)ylabel('三角波图'),grid on;subplot(4,2,6)plot(t,y2)ylabel('叠加了噪声的三角波图'),grid on; subplot(4,2,8)ylabel('叠加了噪声的三角波图的抽样'),grid on; stem(n2,yn2,'.')ynfft=fft(yn);ynfft2=fft(yn2);magyn=abs(ynfft);lgmagyn=20*log10(abs(ynfft));argyn=angle(ynfft);magyn2=abs(ynfft2);lgmagyn2=20*log10(abs(ynfft2));argyn2=angle(ynfft2);figure(2)subplot(3,2,1)plot(n,magyn)ylabel('叠加了噪声的方波幅度响应'),grid on; subplot(3,2,3)plot(n,lgmagyn)ylabel('叠加了噪声的方波对数幅度响应'),grid on; subplot(3,2,5)plot(n,argyn)ylabel('叠加了噪声的方波相位响应'),grid on; subplot(3,2,2)plot(n2,magyn2)ylabel('叠加了噪声的三角波幅度响应'),grid on; subplot(3,2,4)plot(n2,lgmagyn2)ylabel('叠加了噪声的三角波对数幅度响应'),grid on; subplot(3,2,6)plot(n2,argyn2)ylabel('叠加了噪声的三角波相位响应'),grid on;实验结果分析四.实验结果及分析1.方波分析由于方波为半波对称,所以偶次谐波的幅值为零,只有奇次谐波存在,能量主要集中在低次谐波上,且fft变换后基波频率不一样,可见FFT所求的傅里叶变换周期不是完全有原信号决定的。
实验一基于Matlab的数字信号处理基本操作一、实验目的:学会运用MATLAB表示的常用离散时间信号;学会运用MATLAB实现离散时间信号的基本运算。
二、实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。
三、实验内容:(一) 离散时间信号在MATLAB中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。
离散序列通常用X(n)来表示,自变量必须是整数。
离散时间信号的波形绘制在MATLAB中一般用stem函数。
stem函数的基本用法和plot函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。
如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。
由于MATLAB中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。
类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。
1. 单位取样序列单位取样序列、:(n),也称为单位冲激序列,定义为和、? ⑴=0)o(n)=丿0 (n 式0)要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n=0处是取确定的值1。
在MATLAB中,冲激序列可以通过编写以下的impDT.m文件来实现,即function y=impDT(n)y=(n==0); %当参数为0时冲激为1,否则为0调用该函数时n必须为整数或整数向量。
【实例1-1】禾U用MATLAB的impDT函数绘出单位冲激序列的波形图。
解:MATLAB源程序为>>n=-3:3;>>x=impDT(n);>>stem(n,x,'fill'),xlabel('n'),grid on>>title('单位冲激序列’) >>axis([-3 3 -0.1 1.1])1程序运行结果如图1-1所示。
第一次实验MAT1AB的数字信号处理基础一、实验目的1.掌握在MAT1AB中创建和编写脚本程序的步骤,熟悉在MAT1AB中进行基本的矩阵运算2.了解数字信号在计算机系统中的表示和数字信号处理的基本过程3.掌握用MAT1AB产生数字信号的方法二、实验内容1.熟悉在MAT1AB下创建脚本文件编制程序的方法在MAT1AB中,脚本文件时由一系列的命令构成并储存为.m格式的文件。
通常使用m文件来编写一个完整的仿真程序。
脚本文件的创建,可采用以下两种方式:(1)在菜单栏中选择Fi1e下拉框中New选项,可以新建多种MAT1AB文件,我们编辑仿真程序,通常选择第一项BIankM-Fi1e,即新建一个空的MAT1AB文件。
具体参见下图。
图1(2)采用菜单栏中新建按钮即可新建一个空的MAT1AB文件。
Jk MAT1AB7.9.0(R2009b)Fi1eEditDebugParaJ一一J2.MAT1AB中的数据表示MAT1AB中的基本数据单元为数组矩阵,MAT1AB中的数学运算都是基于矩阵的。
掌握了矩阵运算,就掌握了MAT1AB编程的关键。
MAT1AB中使用到的变量无需事先声明其数据类型,大小等,MAT1AB会自动根据赋值情况进行解析。
比如,可用通过以下命令产生一个矩阵:3.常用序列的MAT1AB实现(1)单位抽样序列。
在MAT1AB中可以用以下函数来实现单位抽样序列function[x,n]=impseq(nθ,n1z n2)%产生x(n)=de1ta(n-n0);n1<=n0<=n2if((nθ<n1)∣(nθ>∩2)∣(n1>n2))error('参数必须满足n1<=nθ<=n2,)endn=[n1:n2];x=[zeros(1,(nO-n1))4∕Zθros(1z(n2-nO))];stem(x);图3(2)单位阶跃序列。
在MAT1AB中可用〃>=0来实现〃(〃一%)。
MATLAB实验指导书(共5篇)第一篇:MATLAB实验指导书MATLAB 实验指导书皖西学院信息工程学院实验一 MATLAB编程环境及简单命令的执行一、实验目的1.熟悉MATLAB编程环境二、实验环境1.计算机2.MATLAB7.0集成环境三、实验说明1.首先应熟悉MATLAB7.0运行环境,正确操作2.实验学时:2学时四、实验内容和步骤1.实验内容(1)命令窗口的使用。
(2)工作空间窗口的使用。
(3)工作目录、搜索路径的设置。
(4)命令历史记录窗口的使用。
(5)帮助系统的使用。
(6)了解各菜单的功能。
2.实验步骤(1)启动MATLAB,熟悉MATLAB的桌面。
(2)进入MATLAB7.0集成环境。
(3)在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。
1)(365-52⨯2-70)÷3 2)>>area=pi*2.5^2 3)已知x=3,y=4,在MATLAB中求z:x2y3 z=2(x-y)4)将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字节数。
⎡162313⎤⎢511108⎥⎥m1=⎢⎢97612⎥⎢⎥414151⎣⎦执行以下命令>>m1(2 , 3)>>m1(11)>>m1(: , 3)>>m1(2 : 3 , 1 : 3)>>m1(1 ,4)+ m1(2 ,3)+ m1(3 ,2)+ m1(4 ,1)5)执行命令>>helpabs 查看函数abs的用法及用途,计算abs(3 + 4i)6)执行命令>>x=0:0.1:6*pi;>>y=5*sin(x);>>plot(x,y)7)运行MATLAB的演示程序,>>demo,以便对MATLAB有一个总体了解。
五、思考题1、以下变量名是否合法?为什么?(1)x2(2)3col(3)_row (4)for2、求以下变量的值,并在MATLAB中验证。
1)、实验原理及框图原理上说,数字信息可以直接用数字代码序列表示和传输,但在实际传输中,视系统的要求和信道的情况,一般需要进行不同形式的编码,并且选用一组取值有限的离散波形来表示。
这些取值离散的波形可以是未经调制的电信号,也可以是调制后的信号。
未经调制的数字信号所占据的频谱是从零频率或很低频率开始,称为数字基带信号。
在某些具有低通特性的有线信道中,特别是在传输距离不太远的情况下,基带信号可以不经过载波调制而直接进行传输。
例如,在计算机局域网中直接传输基带脉冲。
这种不经载波调制而直接传输数字基带信号的系统,称为数字基带传输系统,其系统框图如下所示:本次实验采用单极性归零码,所谓归零(Return-to-zero,RZ)波形是指它的有电脉冲宽度τ小于码元宽度T,即信号电压在一个码元终止时刻前总要回到零电平。
通常,归零波形使用半占空码,即占空比(τ/ T)为50%。
波形如下所示:2)、实验结果附:程序源代码Fs=1e4;len=20;sig=[]; out=[];for t=1:2000n=fix(t/100); if n==0in_a(t)=0; elsein_a(t)=in(n); end endsubplot(2,1,1);plot(in_a,'LineWidth',3); title('基带信号','FontWeight','bold','FontSize',20); xlabel('t/s','FontSize',18); axis([100,2100,-0.5,3.5]); set(gca,'XTick',0:100:2000); grid on;CXk=fft(cxn,nfft); Pxx=abs(CXk);index=0:round(nfft/2-1); k=index*Fs/nfft; subplot(2,1,2);plot_Pxx=10*log10(Pxx(index+1)); plot(k,plot_Pxx,'LineWidth',2); title('基带信号功率谱','FontWeight','bold','FontSize',20); axis([0,5000,-10,40]);xlabel('Hz','FontSize',18,'FontSize',18);if in(i)==0ins=[0,0]; elseif in(i)==1 ins=[1,0];elseif in(i)==2 ins=[2,0]; elseins=[3,0]; endsig=[sig,ins]; endfor t=1:4000 n=fix(t/100); if n==0s(t)=0; elses(t)=sig(n); end end figure;plot(s,'LineWidth',3); title('单极性归零码','FontWeight','bold','FontSize',20); xlabel('t/s','FontSize',18); axis([100,4100,-0.5,3.5]); set(gca,'XTick',0:200:4100); grid on;cxn=xcorr(s,'unbiased'); nfft=1024;CXk=fft(cxn,nfft); Pxx=abs(CXk);index=0:round(nfft/2-1); k=index*Fs/nfft; subplot(2,1,2);plot_Pxx=10*log10(Pxx(index+1));plot(k,plot_Pxx,'LineWidth',2); title('单极性归零码功率谱','FontWeight','bold','FontSize',20); axis([0,5000,-10,40]);figure;subplot(2,1,1); plot(s1);title('添加噪声后的信号','FontWeight','bold','FontSize',20); xlabel('t/s','FontSize',18); axis([100,4100,-0.5,3.5]); set(gca,'XTick',0:500:4100); cxn=xcorr(s1,'unbiased'); nfft=1024;CXk=fft(cxn,nfft); Pxx=abs(CXk);index=0:round(nfft/2-1); k=index*Fs/nfft; subplot(2,1,2);plot_Pxx=10*log10(Pxx(index+1)); plot(k,plot_Pxx,'LineWidth',2); title('添加噪声后的信号功率谱','FontWeight','bold','FontSize',20); axis([0,5000,-10,40]);xlabel('Hz','FontSize',18);fp=500;fs= 550;ws=fs*2/Fs; wp=fp*2/Fs;[N, Wp] = ellipord(wp,ws,1,40); [b,a]=ellip(N,1,40,Wp);figure;subplot(2,1,1); plot(sf0);title('滤掉部分噪声后的信号','FontWeight','bold','FontSize',20); xlabel('t/s','FontSize',18); set(gca,'XTick',0:500:4100);cxn=xcorr(sf0,'unbiased'); nfft=1024; CXk=fft(cxn,nfft); Pxx=abs(CXk);index=0:round(nfft/2-1); k=index*Fs/nfft; subplot(2,1,2);plot_Pxx=10*log10(Pxx(index+1)); plot(k,plot_Pxx,'LineWidth',2);title('滤掉部分噪声后的信号功率谱','FontWeight','bold','FontSize',20);axis([0,5000,-10,40]);out=[out,p]; end figure;title('原始码元序列','FontWeight','bold','FontSize',20); axis([1,21,-0.5,3.5]); set(gca,'XTick',0:1:20); grid on;stairs(out,'LineWidth',3);title('抽样判决后恢复的信号序列','FontWeight','bold','FontSize',20); axis([1,21,-0.5,3.5]); set(gca,'XTick',0:1:20); grid on;。
实验1 常见离散信号的MATLAB 产生和图形显示1.实验目的:加深对常用离散信号的理解;2.实验原理: 单位抽样序列⎩⎨⎧=01)(n δ0≠=n n在MA TLAB 中可以利用zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ≠=n k n2.单位阶跃序列⎩⎨⎧01)(n u 00<≥n n在MA TLAB 中可以利用ones()函数实现。
);,1(N ones x =3.正弦序列)/2sin()(ϕπ+=Fs fn A n x在MA TLAB 中)/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复正弦序列nj en x ϖ=)(在MA TLAB 中)**exp(1:0n w j x N n =-=5.指数序列na n x =)(在MA TLAB 中na x N n .^1:0=-=3.实验内容:编制程序产生上述5种信号(长度可输入确定),并绘出其图形。
4.实验要求:(1)预先阅读附录(MA TLAB 基础介绍); (2)讨论复指数序列的性质;(3)打印程序清单和要求的各信号波形。
实验2 离散系统的差分方程、冲激响应和卷积分析1.实验目的:加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。
2.实验原理:离散系统其输入、输出关系可用以下差分方程描述:∑=∑=-=-M k k N k k k n x p k n y d 0][][输入信号分解为冲激信号 ∑-=∞-∞=m m n m x n x ][][][δ记系统单位冲激响应][][n h n →δ则系统响应为如下的卷积计算式 ∑∞-∞=-=*=m m n h m x n h n x n y ][][][][][当Nk d k ,...2,1,0==时,h[n]是有限长度的(n :[0,M]),称系统为FIR 系统;反之,称系统为IIR 系统。
在MA TLAB 中,可以用函数y=Filter(p,d,x) 求解差分方程,也可以用函数 y=Conv(x,h)计算卷积。
3.实验内容:编制程序求解下列两个系统的单位冲激响应和阶跃响应,并绘出其图形。
]1[][]2[125.0]1[75.0][--=-+-+n x n x n y n y n y ]}4[]3[]2[]1[{25.0][-+-+-+-=n x n x n x n x n y4.实验要求:(1)给出理论计算结果和程序计算结果并讨论; (2)打印程序清单和要求的各信号波形。
实验3 系统响应及系统稳定性1.实验目的(1) 掌握求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)分析、观察及检验系统的稳定性。
2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。
已知输入信号, 可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。
在计算机上适合用递推法求差分方程的解,最简单的方法是采用MA TLAB语言的工具箱函数filter函数。
也可以用MA TLAB语言的工具箱函数conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。
系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。
重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。
系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。
或者系统的单位脉冲响应满足绝对可和的条件。
系统的稳定性由其差分方程的系数决定。
实际中检查系统是否稳定,不可能检查系统对所有有界的输入信号,输出是否都是有界输出,或者检查系统的单位脉冲响应满足绝对可和的条件。
可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以断定系统是稳定的[19]。
系统的稳态输出是指当n→∞时,系统的输出。
如果系统稳定,信号加入系统后,系统输出的开始一段称为暂态效应,随n的加大,幅度趋于稳定,达到稳态输出。
注意在以下实验中均假设系统的初始状态为零。
3.实验内容及步骤(1)编制程序,包括产生输入信号、单位脉冲响应序列的子程序,用filter函数或conv 函数求解系统输出响应的主程序。
程序中要有绘制信号波形的功能。
(2)给定一个低通滤波器的差分方程为y(n)=0.05x(n)+0.05x(n-1)+0.9y(n-1)输入信号x1(n)=R8(n), x2(n)=u(n)①分别求出x1(n)=R8(n)和x2(n)=u(n)的系统响应,并画出其波形。
②求出系统的单位脉冲响应,画出其波形。
(3)给定系统的单位脉冲响应为h1(n)=R10(n)h2(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+ δ(n-3)用线性卷积法求x1(n)=R8(n)分别对系统h1(n)和h2(n)的输出响应,并画出波形。
(4)给定一谐振器的差分方程为y(n)=1.8237y(n-1)-0.9802y(n-2)+b0x(n)-b0x(n-2)令b0=1/100.49,谐振器的谐振频率为0.4rad。
①用实验方法检查系统是否稳定。
输入信号为u(n)时,画出系统输出波形。
②给定输入信号为x(n)=sin(0.014n)+sin(0.4n)求出系统的输出响应,并画出其波形。
4.思考题(1)如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷积法求系统的响应?如何求?(2)如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号会有何变化? 用前面第一个实验结果进行分析说明。
5.实验报告要求(1)简述在时域求系统响应的方法。
(2)简述通过实验判断系统稳定性的方法。
分析上面第三个实验的稳定输出的波形。
(3)对各实验所得结果进行简单分析和解释。
(4)简要回答思考题。
(5)打印程序清单和要求的各信号波形。
实验4 时域采样与频域采样1.实验目的时域采样理论与频域采样理论是数字信号处理中的重要理论。
要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
2.实验原理与方法时域采样定理的要点是:对模拟信号x a (t)以T 进行时域等间隔理想采样,形成的采样信号的频谱 会以采样角频率Ωs (Ωs=2π/T )为周期进行周期延拓。
公式为1()[()]()a a asn X j F T x t X j j n T∞=-∞Ω==Ω-Ω∑② 采样频率s Ω必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。
利用计算机计算上式并不方便,下面我们导出另外一个公式,以便在计算机上进行实验。
理想采样信号 ()a x t 和模拟信号()a x t 之间的关系为 ()()()a an x t x t t n T δ∞=-∞=-∑ 对上式进行傅里叶变换,得到:()[()()]()()j tj ta a a n n X j x t t nT edt x t t nT edtδδ∞∞∞∞-Ω-Ω-∞-∞=-∞=-∞Ω=-=-∑∑⎰⎰在上式的积分号内只有当t =nT 时,才有非零值,因此:()()j nta a n X j x nT e∞-Ω=-∞Ω=∑上式中,在数值上()()a x nT x n =,再将ω=ΩT 代入,得到:()()j na a n X j x n e ∞-Ω=-∞Ω=∑上式的右边就是序列的傅里叶变换()j X eω,即()()j a TX j X eωω=ΩΩ=上式说明采样信号的傅里叶变换可用相应序列的傅里叶变换得到,只要将自变量ω用ΩT 代替即可。
频域采样定理的要点是: ① 对信号x (n )的频谱函数()j X eω在[0,2π]上等间隔采样N 点,得到:2()()j k N NX k X e ωπω== k=0,1,2,…,N -1则N 点IDFT [X N (k)]得到的序列就是原序列x (n )以N 为周期进行周期延拓后的主值区序列,公式为()[()][()]N N NN n x n I D F T X k x ni N Rn∞=-∞==+∑ ② 由上式可知,频域采样点数N 必须大于等于时域离散信号的长度M (即N ≥M),才能使时域不产生混叠,则N 点[()]N ID FT X k 得到的序列()N x n 就是原序列x (n ),即()()N x n x n =。
如果N>M ,()N x n 比原序列尾部多N -M 个零点;如果N<M ,则()[()]N N x n ID FT X k=发生了时域混叠失真,而且()N x n 的长度N 也比x (n )的长度M 短,因此, ()N x n 与x (n )不相同。
在数字信号处理的应用中,只要涉及时域或者频域采样,都必须服从这两个采样理论的要点。
对比上面叙述的时域采样原理和频域采样原理,得到一个有用的结论: 这两个采样理论具有对偶性,即“时域采样频谱周期延拓,频域采样时域信号周期延拓”。
因此,将它们放在一起进行实验。
3.实验内容及步骤(1)时域采样理论的验证。
给定模拟信号 0()()()ta x t A es i n t u tα-=Ω 式中, A =444.128,α=,0Ω=rad/s ,它的幅频特性曲线如图1所示。
现用DFT(FFT)求该模拟信号的幅频特性,以验证时域采样理论。
按照()a x t 的幅频特性曲线,选取三种采样频率,即F s=1kHz ,300Hz ,200Hz 。
观测时间选T p=64 ms 。
为使用DFT ,首先用下面的公式产生时域离散信号,对三种采样频率,采样序列按顺序图1 x a (t )的幅频特性曲线用123(),(),()x n x n x n 表示。
0()()()()nTa x n x nT Ae sin nT u nT α-==Ω 因为采样频率不同,得到的123(),(),()x n x n x n 的长度不同,长度(点数)用公式N =T p×F s 计算。
选FFT 的变换点数为M=64,序列长度不够64的尾部加零。
X(k)=FFT[x(n)] , k =0,1,2,3,…,M -1 式中,k 代表的频率为 2k k Mπω=要求:编写实验程序,计算123(),(),()x n x n x n 的幅度特性,并绘图显示。
观察分析频谱混叠失真。
(2)频域采样理论的验证。
给定信号如下:n+1 0≤n≤13x(n)= 27-n 14≤n≤260 其它编写程序分别对频谱函数()j X e ω=FT [x(n)]在区间[0,2π]上等间隔采样32点和16点,得到32()X k 和16()X k : 23232()()j kX k X e ωπω== k=0,1,2,…,31 21616()()j kX k X e ωπω== k=0,1,2,…,15再分别对32()X k 和16()X k 进行32点和16点IFFT ,得到32()x n 和16()x n :32323()[()]x n I F F T X k = n=0,1,2,…,31 16161()[()]x n I F F T X k = n=0,1,2,…,15分别画出()j X eω、32()X k 和16()X k 的幅度谱,并绘图显示x (n )、32()x n 和16()x n 的波形,进行对比和分析,验证总结频域采样理论。