数字信号处理MATLAB实验1
数字信号处理MATLAB实验
(8) 用 FFT 分别计算 xa (n)( p 8, q 2) 和 xb(n) (a=0.1,f=0.0625)的自 相关函数。
三、思考题
(1)实验中的信号序列 xc(n)和 xd(n),在单位圆上的 z 变换频谱
和 一些,为什么?
会相同吗?如果不同,说明哪一个低频分量更多
(2)对一个有限长序列进行 DFT 等价于将该序列周期延拓后进行
五、与本实验有关的 MATLAB 函数 x=sin(2*pi*f/fs*n);生成频率为f,采样频率为fs的正弦信号,式
中,n=[0 1 2 … N]。 sum(X);对于向量X,计算X各元素的和。对于矩阵X,计算X
各列元素之和组成的行向量。 plot(t,y);画出以向量t为坐标的向量y(行或列)的曲线。向
出该信号,并讨论信号的混叠情况。
(3) 令
,其中 f/fs=1/16,即每个周期有 16 个
点。试利用 MATLAB 编程实现:
○1 作 M=4 倍的抽取,使每个周期变成 4 点。
○2 作 L=3 倍的插值,使每个周期变成 48 点。
(4)输入信号 x(n)为归一化频率分别为 f1=0.04,f2=0.3 的正 弦信号相加而成,N=50,插因子为 5,抽取因子为 3,给出 按有理因子 5/3 做采样率变换的输入输出波形。
(1) 简述实验目的及原理。 (2) 按实验步骤附上试验程序。 (3) 按实验容附上有关离散信号的波形或关键样本,对音频信号
给出测听的结果。 (4) 简要回答思考题。 五、 与本实验相关的 MATLAB 函数 y=decimate(x,M);对信号 x 按整数 M 作抽取,抽取前后作抗混叠低 通滤波,结果放在 y 中。 y=interp(x,L); 对信号 x 按整数 L 插零,然后作抗镜像低通滤波, 结果放在 y 中。 y=resample(x,L,M);对信号 x 按有理因子 L/M 作采样率转换,结果 放在 y 中。
数字信号处理 Matlab实验一 Matlab 基本功能和基础知识操作
温州大学物理与电子信息工程学院Matlab 仿真及其应用 实验报告实验一Matlab 基本功能和基础知识操作 [实验目的和要求]1、 熟练掌握Matlab 的启动与退出2、 熟悉Matlab 的命令窗口、常用命令、帮助系统3、 熟悉Matlab 的数据类型、基本矩阵操作、运算符和字符串处理[实验内容]1、 用逻辑表达式球下列分段函数的值 22201112,=0:0.5:2.52123t t y t t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩其中2、 求[100,999]之间能被32整除的数的个数3、 建立一个字符串向量,删除其中的小写字母。
4、 输入矩阵1234514789A ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,求出此矩阵的行列式,逆和特征根,并找出A 中大于5和小于9的元素,用行列式表示。
5、 不采用循环的形式求出和式63230034ii i i S ===+∑∑6、 给定矩阵E=rand (4,4),计算C+E ,C*E ,C\E实验结果及分析:经过Matlab 软件的程序编辑和测试分析,得出以下实验结果: 详见程序代码、注释及屏幕截图:【题1】程序代码:t=0:0.5:2.5y=t.^2.*((t>=0)&(t<1))+(t.^2-1).*((t>=1)&(t<2))+(t.^2-2*t+1).*((t>=2)&(t<3)) 效果截图:【题2】程序代码:p=rem([100:999],32)==0;sum(p)效果截图:【题3】程序代码:ch='dfghjGUIJKVC',k=find(ch>'a'&ch<='z'),ch(k)=[]效果截图:【题4】程序代码:A=[1 2 3;4 5 14;7 8 9];[i,j]=find(A>5&A<9) %定位for n=1:length(i)m(n)=A(i(n),j(n))endDA=det(A) %行列式IA=inv(A) %逆矩阵EA=eig(A) %特征根效果截图:【题5】程序代码:E=rand(4,4); %产生随机数0~1 C=rand(4,4);B1=C+E;B2=C*E;B3=C/E;B1B2B3效果截图:【题6】程序代码:E=rand(4,4); %产生随机数0~1 C=rand(4,4);B1=C+E;B2=C*E;B3=C/E;B1B2B3效果截图:4、心得:通过本次Matlab课程实验,我已熟练Matlab的命令窗口、常用命令、帮助系统,并掌握Matlab的数据类型、基本矩阵操作、运算符和字符串处理。
matlab数字信号处理实验
以 代替上式中的Z,就可以得到序列x(n)的傅里叶变换
X( )= (1-8)
式(1—6)和式(1—8)具有如下关系:
=X( )︱ (1-9)
由式(1—9)可知,在分析一个连续时间信号的频谱时,可以通过取样将有关的计算转换为序列傅里叶变换的计算。
(二)有限长序列分析
一般来说,在计算机上不可能,也不必要处理连续的曲线X(e ),通常,我们只观察、分析X(e )在某些频率点上的值。对于长度为N的有限长序列
(1-5)
作为拉氏变换的一种特例,信号理想采样的傅里叶变换
(1-6)
由式(1—5)和式(1—6)可知,信号理想采样后的频谱是原信号频谱的周期延拓,其延拓周期等于采样频率,根据Shannon取样定理,如果原信号是带限信号,且采样频率高于原信号的最高频率分量2倍,则采样以后不会发生频谱混迭现象。
在计算机处理时,不采用式(1—6)计算信号的频谱,而是利用序列的傅里叶变换计算信号的频谱,可以得到序列x(n)的Z变换为:
信号产生子程序:
1、理想采样信号序列xa(n)
n=0:50;
A=444.128;
a=50*sqrt(2.0)*pi;
T=1/1000;
w0=50*sqrt(2.0)*pi;
x=A*exp(-a*n*T).*sin(w0*n*T);
close all
subplot(3,1,1);
stem(x);
title('通信学号理想采样信号序列xa(n)');
贴出最后得到的图形
四:思考:系统最高频率是多少?第一个实验中有无频谱混迭,为什么?第二个实验中有无频谱混迭,为什么?
X=x*(exp(-j*pi/12.5)).^(n'*k);
第一次实验 MATLAB的数字信号处理基础
第一次实验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实验内容--第1章
实验1 离散时间信号的时域分析一、实验目的(1)了解MATLAB 语言的主要特点及作用;(2)熟悉MATLAB 主界面,初步掌握MATLAB 命令窗和编辑窗的操作方法;(3)学习简单的数组赋值、数组运算、绘图的程序编写;(4)了解常用时域离散信号及其特点;(5)掌握MATLAB 产生常用时域离散信号的方法。
二、知识点提示本章节的主要知识点是利用MATLAB 产生数字信号处理的几种常用典型序列、数字序列的基本运算;重点是单位脉冲、单位阶跃、正(余)弦信号的产生;难点是MATLAB 关系运算符“==、>=”的使用。
三、实验内容1. 在MATLAB 中利用逻辑关系式0==n 来实现()0n n -δ序列,显示范围21n n n ≤≤。
(函数命名为impseq(n0,n1,n2))并利用该函数实现序列:()()()632-+-=n n n y δδ;103≤≤-nn 0212. 在MATLAB 中利用逻辑关系式0>=n 来实现()0n n u -序列,显示范围21n n n ≤≤。
(函数命名为stepseq(n0,n1,n2))并利用该函数实现序列:()()()20522≤≤--++=n n u n u n y3. 在MATLAB 中利用数组运算符“.^”来实现一个实指数序列。
如: ()()5003.0≤≤=n n x n4. 在MATLAB 中用函数sin 或cos 产生正余弦序列,如:()()2003.0cos 553.0sin 11≤≤+⎪⎭⎫ ⎝⎛+=n n n n x πππ5. 已知()n n x 102cos 3π=,试显示()()()3,3,+-n x n x n x 在200≤≤n 区间的波形。
6. 参加运算的两个序列维数不同,已知()()6421≤≤-+=n n u n x ,()()8542≤≤--=n n u n x ,求()()()n x n x n x 21+=。
数字信号处理实验一
数字信号处理实验一实验目的:掌握利用Matlab产生各种离散时间信号,实现信号的相加、相乘及卷积运算实验函数:参考课本77-19页,注意式(2.11.1)的表达与各matlab子函数间的关系。
1、stem(x,y) % 绘制以x为横轴,y为纵轴的离散序列图形2、[h ,t] = impz(b, a) % 求解数字系统的冲激响应h,取样点数为缺省值[h, t] = impz(b, a, n) % 求解数字系统的冲激响应h,取样点数为nimpz(b, a) % 在当前窗口用stem(t, h)函数出图3、[h ,t] = dstep(b, a) % 求解数字系统的阶跃响应h,取样点数为缺省值[h, t] = dstep (b, a, n) % 求解数字系统的阶跃响应h,取样点数为ndstep (b, a) % 在当前窗口用stairs(t, h)函数出图4、y = filter(b,a,x) % 在已知系统差分方程或转移函数的情况下求系统输出实验原理:一、常用的时域离散信号及其程序1、产生单位抽样函数δ(n)n1 = -5;n2 = 5;n0 = 0;n = n1:n2;x = [n==n0]; % x在n=n0时为1,其余为0stem(n,x,'filled'); %filled:序列圆心处用实心圆表示axis([n1,n2,0,1.1*max(x)])title('单位抽样序列')xlabel('time(n)')ylabel('Amplitude:x(n)')2、产生单位阶跃序列u(n)n1 = -2;n2 = 8;n0 = 0;n = n1:n2;x = [n>=n0]; % x在n>=n0时为1,其余为0stem(n,x,'filled');axis([n1,n2,0,1.1*max(x)])title('单位阶跃序列')xlabel('time(n)')ylabel('Amplitude:x(n)')3、复指数序列复指数序列的表示式为()(),00,0j n e n x n n σω+⎧≥⎪=⎨<⎪⎩,当0ω=时,()x n 为实指数序列;当0σ=时,()x n 为虚指数序列,即()()cos sin j n e n j n ωωω=+,即其实部为余弦序列,虚部为正弦序列。
Matlab数字信号处理实验报告材料
数字信号处理实验报告基础实验篇实验一离散时间系统及离散卷积一、实验原理利用Matlab软件计算出系统函数的零极点分布、单位脉冲响应和系统频率响应等的图像并于笔算结果进行比较,找出异同。
编译合适程序能计算取值范围不同的离散卷积。
二、实验目的(1)熟悉MATLAB软件的使用方法。
(2)熟悉系统函数的零极点分布、单位脉冲响应和系统频率响应等概念。
(3)利用MATLAB绘制系统函数的零极点分布图、系统频率响应和单位脉冲响应。
三、实验步骤(1)自编并调试实验程序,并且,给实验程序加注释;(2)按照实验内容完成笔算结果;(3)验证计算程序的正确性,记录实验结果。
(4)至少要求一个除参考实例以外的实验结果,在实验报告中,要描述清楚实验结果对应的系统,并对实验结果进行解释说明。
四、实验源程序及实验结果实验二 离散傅立叶变换与快速傅立叶变换一、 实验原理对有限长序列使用离散Fouier 变换(DFT)可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N 时,它的DFT 定义为()()[]()∑==-=1N n nk N W n x n x DFT k X 10-≤≤N k反变换为()()[]()∑==-=-101N n nkN W k X N k X IDFT n x 10-≤≤N n 有限长序列的DFT 是其Z 变换在单位圆上的等距采样,或者说是序列Fourier 变换的等距采样,因此可以用于序列的谱分析。
FFT 是为了减少DFT 运算次数的一种快速算法。
它是对变换式进行一次次分解,使其成为若干较短序列的组合,从而减少运算量。
常用的FFT 是以2为基数的,其长度。
它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT ,可以用末位补零的方法,使其长度延长至2的整数次方。
用FFT 可以实现两个序列的圆周卷积。
在一定的条件下,可以使圆周卷积等于线性卷积。
数字信号处理上机实验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=[wp ws];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+000.0000e+000.0000e+000.0000e+000.0000e+000.0000e+000.0000e+000.0000e+006.2187e+30分母多项式系数分别为1.0000e+003.6222e+046.5603e+087.7093e+126.4060e+163.8498e+201.6360e+244.5108e+276.2187e+30Ap=6.1668e-01As=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/wp 1/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+000.0000e+000.0000e+000.0000e+000.0000e+00高通滤波器分母多项式系数1.0000e+005.1920e+041.3478e+092.0497e+131.5585e+17Ap=1.0977e-01Bp=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('时间');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('时间');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=[wp ws];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('Normalized frequency');ylabel('Gain,dB');axis([0 1 -50 0]);grid;输出结果分子多项式的系数1.5777e-013.1555e-011.5777e-01分母多项式的系数1.0000e+00-6.0620e-012.3730e-01ap=0.3945as=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=[wp ws];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.00000.00000.00000.00000.00001202796127888840400.0000分母多项式的系数1.00005886.214566671782.4829241699153902.8650904788863911639.00001202796127888840400.0000ap=1.0000as=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/wp 1/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+00as=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=[wp ws];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.0000566.39190.0000290688415499.92920.0000 29837909134910329000.0000分母多项式的系数1.000024344.5782296168842.7942 2252800523365.8032 10820843108280358.0000 29837909134910292000.0000 ap=1.0000as=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/wp 1/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+00as=4.4779e+01输出图形实验10画一个信号的频谱图clear;fs=1000;f1=50;f2=100;f3=200;N=100t=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;用巴特沃斯滤波器设计。
数字信号处理实验一
实验一:熟悉MATLAB环境一、思考题:1、比较实验内容第2题中的第4和第5小题的结果,试说明对于周期性信号应当如何采样才能保证周期扩展后与原信号保持一致?答:对于周期性信号,在进行采样时,其采样周期必须满足采样定理,即采样频率应该大于信号最高频率的两倍,这样才能避免迭混,以便采样后仍能准确的恢复原信号。
2、对于有限长序列,如何用MATLAB计算其DTFT?答:用函数freqz可以计算序列在给定的离散频率点上的DTFT,该变换序列是以形如式的有理函数来描述的。
这个函数的表达形式有H=freqz(num,den,w)、[H,w]=freqz(num,den,k)。
函数freqz返回的频率响应值为向量H。
在H=freqz(num,den,w)中,0到π之间指定的频率集由向量w给出。
freqz函数的自变量k就是频率点的总数。
3、对于由两个子系统级联或并联的系统,如何用MATLAB计算他们的幅频响应与相频响应?答:系统的级联或并联实现涉及到了因式分解。
在MATLAB中,我们可以用函数roots来实现多项式的因式分解。
例如,函数r=roots(h)会返回多项式向量h 的根向量。
向量h是以的升幂表示的多项式的系数。
通过计算所得的根向量,可以求出二次因式的系数。
更简单的方法是用从以给定的传输函数H(z)直接求出二阶因式的函数zp2sos。
函数sos=zp2sos(z,p,k)产生以零—极点形式确定的等效传输函数H(z)的每个二阶部分系数的矩阵sos。
二、实验内容:第一到四题源程序:第二题图:第五题:%函数命名:function [x1]=stepshift(n0,n1,n2) n=[n1:n2];x1=[(n-n0)>=0];%源程序:>> [x1]=stepshift(2,1,10);>> n=1:10;>> stem(n,x1);第六题:>> b=[1,sqrt(2),1];>> a=[1,-0.67,0.9];>> [h,w]=freqz(b,a);>> am=20*log10(abs(h)); %求幅频特性>> subplot(2,1,1);plot(w,am);>> xlabel('w');ylabel('am');>> ph=angle(h); %求相频特性>> subplot(2,1,2);plot(w,ph);>> xlabel('w');ylabel('ph');第七题:源程序:>> a=[8 -2 -1 2 3];>> b=[2 3 -1 -3];>> c=conv(a,b); %求a、b的线性卷积>> m=length(c)-1;>> n=0:1:m;>> stem(n,c);>> xlabel('n');ylabel('幅度');第八题:源程序:>> n=50;>> a=[1 -2];>> b=[1 0.1 -0.06];>> x=[1 zeros(1,n-1)];>> k=0:1:n-1;>> y=filter(a,b,x);>> stem(k,y);>> xlabel('n');ylabel('幅度');三、实验总结:通过本次实验,熟悉并掌握MATLAB的主要命令操作,比如序列的简单运算、矩阵的输入和计算等,能熟练编写绘图程序,在计算卷积和绘制幅频响应和相频响应的过程中,充分地巩固了数字信号处理学的理论知识,总之,收获颇多。
实验一实验报告
实验报告
实验内容:
一基本操作界面及其功能
图为matlab操作界面
左上为文件路径以及文件列表
左下为工作区显示所定义的变量
右上为打开的m文件编辑器
右下为命令行窗口
二Matlab语言的基本语法和程序文件
2.1常数矩阵输入
2.2循环命令程序及问题一
三基本绘图命令
3.1向量绘图
3.2保持作图
3.3矩阵作图设定颜色和线型
3.4多窗口绘图
3.5三维绘图及问题二
实验总结:
1)Matlab矩阵输入用[],空格代表数据为行向量,加;则为列向量,矩阵则结合空格和;,语句后面加;代表不输出,条件语句要以end结束。
2)Matlab绘图用plot(),参数包括自变量和因变量图形颜色线条形状字体大小……。
3)plot3()绘制三维图像,比plot参数多一个,hold on保持作图hold off 关闭,subplot()可以多窗口绘图,参数222则为二行二列图像,位置为一行二列surf()为曲面mesh()为网面图。
《数字信号处理》Matlab实验
《数字信号处理》Matlab 实验一.离散信号的 FFT 分析1.用Matlab 编程上机练习。
已知:N=2^5。
这里Q=0.9+j0.3。
可以推导出 ,首先根据这个式子计算X(k)的理论值,然后计算输入序列x(n)的32个值,再利用基2时间抽选的FFT 算法,计算x(n)的DFT X(k),与X(k)的理论值比较(要求计算结果最少6位有效数字)。
解:函数代码:>> function xn()>> format long>> q=0.9+0.3*i;>> wn=exp(-2*pi*i/32);>> xk=(1-q^32)./(1-q*wn.^[0:31])>>xn=q.^[0:31]>> xk1=fft(xn,32)>>diff=xk-xk1具体执行情况:>> function xn()format longq=0.9+0.3*i;wn=exp(-2*pi*i/32);xk=(1-q^32)./(1-q*wn.^[0:31])xk =Columns 1 through 20.5698 + 3.3840i 2.8369 + 8.8597iColumns 3 through 49.3189 - 9.8673i 1.2052 - 3.5439iColumns 5 through 61.8846 -2.0941i 0.8299 - 1.2413i11,011)()()(k k 10nk 10-=--===∑∑-=-=N k QW Q QW W n x k X N NnN N n N N n ,0.9214 - 1.0753i 0.3150 - 0.0644i Columns 9 through 100.9240 - 0.8060i 0.4202 - 0.2158i Columns 11 through 120.8513 - 0.6357i 0.5040 - 0.1701i Columns 13 through 140.6217 - 0.6931i 0.2441 - 0.8978i Columns 15 through 160.9454 - 0.2800i 0.7139 - 0.3158i Columns 17 through 180.6723 - 0.6496i 0.0263 + 0.5093i Columns 19 through 200.5671 + 0.6914i 0.3173 + 0.9841i Columns 21 through 220.8929 + 0.7792i 0.4066 + 0.8452i Columns 23 through 240.5847 + 0.9017i 0.9129 + 0.9283i Columns 25 through 260.0573 + 0.5531i 0.4219 + 0.9562i Columns 27 through 280.3298 + 0.3143i 0.4513 + 0.2638i0.7214 + 0.1879i 0.0933 + 1.7793iColumns 31 through 320.9483 + 1.9802i 0.4932 + 2.6347i>> xn=q.^[0:31]xn =Columns 1 through 21.0000 0.0000 + 0.0000i Columns 3 through 40.0000 + 0.0000i 0.0000 + 0.0000iColumns 5 through 60.0000 + 0.0000i -0.0000 + 0.0000iColumns 7 through 8-0.0000 + 0.0000i -0.0000 + 0.0000iColumns 9 through 10-0.0000 + 0.0000i -0.0000 + 0.0000iColumns 11 through 12-0.0000 - 0.0000i -0.0000 - 0.0000iColumns 13 through 14-0.2000 - 0.4000i -0.3600 - 0.5200iColumns 15 through 16-0.9680 - 0.1760i 0.4816 - 0.3488i0.2381 - 0.2695i 0.2951 - 0.1711i Columns 19 through 200.1169 - 0.4655i 0.4449 - 0.9838i Columns 21 through 220.6955 + 0.2480i 0.5516 + 0.4319i Columns 23 through 240.3669 + 0.5542i 0.9639 + 0.2088i Columns 25 through 260.3049 + 0.9771i -0.5187 + 0.4709i Columns 27 through 28-0.6081 + 0.2682i -0.1278 + 0.5589i Columns 29 through 30-0.4827 + 0.0647i -0.6538 + 0.5134i Columns 31 through 32-0.8425 - 0.4341i -0.1280 - 0.1434i >> xk1=fft(xn,32)xk1 =Columns 1 through 20.5698 + 3.3839i 2.8366 + 8.8599i Columns 3 through 49.3182 - 9.8692i 1.2051 - 3.5439i1.8845 -2.0942i 0.8298 - 1.2413i Columns 7 through 80.9213 - 1.0754i 0.3150 - 0.0645i Columns 9 through 100.9240 - 0.8060i 0.4202 - 0.2158i Columns 11 through 120.8514 - 0.6356i 0.5040 - 0.1701i Columns 13 through 140.6217 - 0.6931i 0.2441 - 0.8977i Columns 15 through 160.9454 - 0.2800i 0.7139 - 0.3159i Columns 17 through 180.6723 - 0.6496i 0.0263 + 0.5093i Columns 19 through 200.5671 + 0.6913i 0.3172 + 0.9840i Columns 21 through 220.8929 + 0.7792i 0.4065 + 0.8452i Columns 23 through 240.5846 + 0.9016i 0.9129 + 0.9283i Columns 25 through 260.0572 + 0.5531i 0.4219 + 0.9563i0.3297 + 0.3144i 0.4512 + 0.2638iColumns 29 through 300.7213 + 0.1879i 0.0932 + 1.7793iColumns 31 through 320.9480 + 1.9802i 0.4928 + 2.6347i>> diff=xk-xk1diff =1.0e-013 *Columns 1 through 20.4625 + 0.8501i 0.9504 - 0.4003iColumns 3 through 40.6010 + 0.4028i 0.4752 + 0.7001iColumns 5 through 60.5502 + 0.8501i 0.4625 + 0.8501iColumns 7 through 80.7751 + 0.9250i 0 + 0.3875i Columns 9 through 100.7751 - 0.4625i 0.3126 - 0.4625iColumns 11 through 12-0.4625 - 0.3126i 0.4625 + 0.3875iColumns 13 through 14-0.9250 + 0.6938i 0.3875 - 0.0781iColumns 15 through 160.3875 - 0.6156i 0 + 0.9641iColumns 17 through 180.9250 - 0.7598i -0.4625 - 0.0422iColumns 19 through 200.4625 + 0.1172i 0.4625 + 0.3094iColumns 21 through 220.9250 + 0.4625i 0.9250 + 0.2313iColumns 23 through 240.3875 + 0.1563i 0.3875 - 0.2313iColumns 25 through 260.8501 -0.9250 - 0.4625iColumns 27 through 280.0127 - 0.7751i 0.7001 - 0.9250iColumns 29 through 300.1626 0.7814 - 0.9250iColumns 31 through 320.4816 + 0.9250i 0.7255 - 0.8501i由以上结果可知,由基2时间抽选的FFT算法所得到的DFT结果与利用公式法所得的理论值稍有偏差,但误差较小,从结果可以看出大概在小数点第15位才开始出现误差,故而用计算机FFT处理数据在精度上是可以接受的。
数字信号处理实验报告MATLAB
数字信号处理实验报告姓名:班级:09电信一班学号:2)]得下图二,图二图一3.将如下文件另存为:sigadd.m文件function [y,n] = sigadd(x1,n1,x2,n2)% 实现y(n) = x1(n)+x2(n)% -----------------------------% [y,n] = sigadd(x1,n1,x2,n2)% y = 在包含n1 和n2 的n点上求序列和,% x1 = 在n1上的第一序列% x2 = 在n2上的第二序列(n2可与n1不等)n = min(min(n1),min(n2)):max(max(n1),max(n2)); % y(n)的长度y1 = zeros(1,length(n)); y2 = y1; % 初始化y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % 具有y的长度的x1y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % 具有y的长度的x2y = y1+y2;在命令窗口输入:x1=[1,0.5,0.3,0.4];n1=-1:2;x2=[0.2,0.3,0.4,0.5,0.8,1];n2=-2:3; [y,n] = sigadd(x1,n1,x2,n2)得:y =n=-1:10;x=sin(0.4*pi*n);y=fliplr(x);n1=-fliplr(n);subplot(2,1,1),stem(n,x) subplot(2,1,2),stem(n1,y在命令窗口键入:n=-1:10; x=sin(0.4*pi*n);n (samples)实验结果:1.(1)在命令窗口输入:tic; [am,pha]=dft1(x)N=length(x);w=exp(-j*2*pi/N);for k=1:Nsum=0;for n=1:Nsum=sum+x(n)*w^((k-1)*(n-1));endam(k)=abs(sum);pha(k)=angle(sum);end;toc得到如下结果:am =Columns 1 through 11120.0000 41.0066 20.9050 14.3996 11.3137 9.6215 8.6591 8.1567 8.0000 8.1567 8.6591Columns 12 through 169.6215 11.3137 14.3996 20.9050 41.0066pha =Columns 1 through 110 1.7671 1.9635 2.1598 2.3562 2.5525 2.7489 2.9452 3.1416 -2.9452 -2.7489Columns 12 through 16-2.5525 -2.3562 -2.1598 -1.9635 -1.7671Elapsed time is 0.047000 seconds.(2)在命令窗口输入:tic;[am,pha]=dft2(x)N=length(x);n=[0:N-1];k=[0:N-1];w=exp(-j*2*pi/N);nk=n’*k;wnk=w.^(nk); Xk=x*wnk; am= abs(Xk); pha=angle(Xk); toc得到下图:figure(1)00.10.20.30.40.50.60.70.80.91signal x(n), 0 <= n <= 99(2)在命令窗口键入:n3=[0:1:99];y3=[x(1:1:10) zeros(1,90)]; %添90个零。
《数字信号处理》实验及代码
实验一 用Matlab 进行数字信号处理一、实验目的1.掌握 MATLAB 基本的操作;2.学习典型的离散信号的Matlab 实现方法。
3.学习离散时间序列的基本运算:相加、相乘、移位等; 二、实验内容1. 练习把y=sin(x), z=cos(x),u=2sin(x),v=sin(x)/cos(x)在[0,2pi]区间内的4个子图分别用不同的颜色、点型和线型绘制在同一个窗口中,并加上纵坐标、标题、图例和网格线。
2. 利用MATLAB 编程产生和绘制下列有限长序列: (1)单位脉冲序列()n δ (2)单位阶跃序列()u n (3)矩形序列8()R n(4)正弦序列()sin()53x n n ππ=+(5)实指数序列0.9()n u n3.上机调试并打印或记录实验结果。
4.完成实验报告。
三、实验结果1. 实验程序如下:x=0:pi/10:2*pi;y=sin(x); plot(x,y,'r*:');grid on %绘制网格线 hold on z=cos(x); plot(x,z,'y+-'); hold on u=2*sin(x); plot(x,u,'bx-'); hold on v=sin(x)/cos(x); plot(x,v,'ko-');hold onxlabel('x 轴'); %x轴注释ylabel('y 轴'); %y轴注释legend({'y=sin(x)','z=cos(x)', 'u=2sin(x) ', 'v=sin(x)/cos(x) '}); %图形注解2. 程序如下:n=-20:20;n0=0;n1=8;w0=pi/5; w1=pi/3;x1=[(n-n0)==0];x2=[(n-n0)>=0];x3=[(n-n0)>=0& (n-n1)<=0];x4=sin(w0*n+w1);x5=0.9.^n.*x2;subplot(511);stem(n,x1);axis([ -20 20 0 2]);ylabel('\sigma(n)'); subplot(512);stem(n,x2);axis([ -20 20 0 2]);ylabel('u(n)');subplot(513);stem(n,x3);axis([ -20 20 0 2]);ylabel('R8(n)'); subplot(514);stem(n,x4);axis([ -20 20 -2 2]);ylabel(' sin(w0n+w1) '); subplot(515);stem(n,x5);axis([ -20 20 0 2]);ylabel('0.9nu(n)'); xlabel('n');实验二离散信号与系统一、实验目的1.掌握卷积定理、熟悉离散信号和系统的时域特性;2.学习Matlab进行卷积计算方法;3.学习Matlab求解差分方程二、实验内容1.离散信号的基本运算:对序列x(n)={2,3,4,1,2,5} ,n=0,1,2,3,4,5,的移位、乘法、加法、翻转及尺度变换。
数字信号处理(MATLAB版)上机实验操作
实验一离散时间信号与系统一、实验目的:1、熟悉常见离散时间信号的产生方法;2、熟悉离散时间系统的单位脉冲响应和单位阶跃响应的求解方法;3、熟悉离散时间信号经过离散时间系统的响应的求解方法。
二、实验内容:已知离散时间系统差分方程为y(n)-0.5y(n-1)+0.06y(n-2)=x(n)+x(n-1),求1、该系统的单位脉冲响应并绘图;2、该系统的单位阶跃响应并绘图;3、已知x(n)=可自己指定用filter函数经过系统的响应并绘图;4、用conv_m函数求系统响应并绘图。
三、实验平台:MA TLAB集成系统四、设计流程:此处写个人自己的设计流程五、程序清单:此处写程序内容六、调试和测试结果:此处写程序的执行结果和实验过程中的调试经过、出现的错误和对应的解决方法七、教师评语与成绩评定此处由老师填写上机操作:实验一离散时间信号与系统实验内容:1.脉冲响应>> b =[1,1]; a = [1,-0.5,0.06];n = [-10:25];>> impz(b,a,n);>> title('Impulse Response'); xlabel('n'); ylabel('h(n)')2.单位阶跃响应>> x = stepseq(0,-10,25); s = filter(b,a,x);Warning: Function call stepseq invokes inexact match d:\MATLAB7\work\STEPSEQ.M.>> stem(n,s)>> title('Step Response'); xlabel('n');ylabel('s(n)')3.>> a=[1,-0.5,0.06];b=[1,1];>> n=-20:120;>> x1=exp(-0.05*n).*sin(0.1*pi*n+pi/3);>> s1=filter(b,a,x1);>> stem(n,s1);;xlabel('n');ylabel('s1(n)');4.>> a=[1,-0.5,0.06];b=[1,1];>> n=-20:120;>> h=impz(b,a,n);>> x1=exp(-0.05*n).*sin(0.1*pi*n+pi/3);>> [y,m]=conv_m(x1,n,h,n);Warning: Function call conv_m invokes inexact match d:\MATLAB7\work\CONV_M.M. >> stem(m,y);title('系统响应');xlabel('m');ylabel('y(m)');实验二离散信号与系统的连续频域分析一、实验目的:1、掌握离散时间信号的DTFT的MATLAB实现;2、掌握离散时间系统的DTFT分析;3、掌握系统函数和频率相应之间的关系。
《基于MATLAB的数字信号处理》实验报告
0.60007.0000-5.4000所以,X=[错误!未找到引用源。
]=[ 0.6000, 7.0000, -5.4000]’实验结果2:K=1.732051实验结果3:三曲线的对比图如下所示:图1.1 三曲线的对比实验二基于MATLAB信号处理实验xlabel('频率/Hz');ylabel('振幅/dB');title('布莱克窗的幅频特性');grid on;subplot(2,1,2);plot(f4,180/pi*unwrap(angle(H4)));xlabel('频率/Hz');ylabel('相位');title('布莱克窗的相频特性');grid on;六、实验结果实验结果2.1:图2-1 x(n)与y(n)的互相关序列图由实验结果可知,x(n)与y(n)的互相关只在区间[-4,8]上有能力,刚好是区间[-3,3]与右移后的区间[-1,5]两端点之和,与结论一致。
且互相关在2处达到最大。
实验结果2.2.1:其表示的差分方程为:y(n)-0.8145y(n-4)=x(n)+x(n-4)实验结果2.2.2:滤波器的幅频和相频图如下所示:图2-2 滤波器的幅频与相频图实验结果2.2.3:由下图实验结果可知,输出信号相对于输入信号有一小小的延迟,基本上x(n)的频点都通过了,滤波器是个梳状filter,正好在想通过的点附近相位为0,也就是附加延迟为0图2-3 滤波器的幅度和相位变化图2-4 两信号波形实验结果2.3:四种带通滤波器的窗函数的频率响应如下所示:图2-5 矩形窗的频率特性图2-6 汉宁窗的频率特性图2-7 海明窗的频率特性图2-8 布莱克曼窗的频率特性图3-1 加噪前、后图像对比图3-2 加椒盐噪声的图像均值滤波前、后的图像对比图3-3 加椒盐噪声的图像中值滤波前、后的图像对比图3-4加高斯噪声的图像均值滤波前、后的图像对比图3-5 加高斯噪声的图像中值滤波前、后的图像对比实验结果3.2:图3-6 原图及重构图像图3-7 程序运行结果由实验结果可知,当DCT变换的系数置0个数小于5时,重构图像与原图像的峰值信噪比为2.768259,重构图像置为0的变换系数的个数个数为:43.708737;当DCT变换的系数置0个数小于10时,重构图像与原图像的峰值信噪比15.922448,重构图像置为0的变换系数的个数个数为:36.110705;当DCT变换的系数置0个数小于5时,重构图像与原图像的峰值信噪比为2.768259,重构图像置为0的变换系数的个数个数为:30.366348;可以发现,在抛弃部分DCT系数后,重构图像时不会带来其画面质量的显著下降,采用这种方法来实现压缩算法时,可以通过修改mask变量中的DCT系数来更好地比较仿真结果。
Matlab数字信号处理实验报告
实验 2-3
n=0:30;%输入x(n)和冲激响应 h(n) x=zeros(1,length(n)); h=zeros(1,length(n)); x([find((n>=0)&(n<=4))] ) =1; h([find((n>=0)&(n<=8))] ) =0.5; subplot(3,1,1); stem(x); title('x(n)'); axis([0,30,0,2]); subplot(3,1,2); stem(h); title('h(n)'); axis([0,30,0,2]); X=fft(x); H=fft(h); Y=X.*H; y=ifft(Y); subplot(3,1,3);
变换及 h(n) 的 Z 变换,则
H (z) zesT
1 T
Ha (s
m
j
2 T
m)
(2) 双线性变换法
s
平面与
z
平面之间满足以下映射关系:
s
2 T
1 1
z 1 z 1
s 平面的虚轴单值地映射于 z 平面的单位圆上,s 平面的左半平面完全映射 到 z 平面的单位圆内。双线性变换不存在混叠问题。双线性变换时一种非线性变
subplot(3,1,2); stem(n,h); axis([0,30,0,2]); title('冲激响应序列'); xlabel('n'); ylabel('h(n)');
数字信号处理实验
实验一 熟悉MATLAB 环境一、实验目的1. 熟悉MATLAB 环境的主要操作命令。
2. 掌握简单的绘图命令。
3. 用MATLAB 编程并学会创建函数。
二、实验仪器装有MATLAB 语言的计算机 三、实验原理MATLAB 的基本命令和函数 四、实验内容和要求1. 序列的产生1)编写MATLAB 程序,产生并绘制一个单位样本(单位冲激或单位阶跃)序列2)编写MATLAB 程序,生成一个实数值的指数序列(例:1508.0)(≤≤=n n x n 或150)()32.0(≤≤=+n e n x nj );3)编写MATLAB 程序,产生一个正弦信号;(例:150)1.025.0sin(2)2.0125.0cos(3)(≤≤+++=n n n n x ππππ)实验二离散序列的基本运算一、实验目的(1)进一步了解离散时间序列时域的基本运算。
(2)了解MATLAB语言进行离散序列运算的常用函数,掌握离散序列运算程序的编写方法。
二、实验原理离散序列的时域运算包括信号的相加、相乘,信号的时域变换包括信号的移位、反折、倒相及信号的尺度变换等。
三、实验内容1、x(n)=u(n-2)+u(n+2),(-5<n<5)。
MATLAB程序如下:n1=-5;n2=5;n01=2,n02=-2;n=n1:n2;x1=[(n-n01)>=0];x2=[(n-n02)>=0];x3=x1+x2;subplot(3,1,1);stem(n,x1,'filled');axis([n1,n2,1.1*min(x1),1.1*max(x1)]);ylabel('u(n-2)');subplot(3,1,2);stem(n,x2,'filled');axis([n1,n2,1.1*min(x2),1.1*max(x2)]);ylabel('u(n+2)');subplot(3,1,3);stem(n,x3,'filled');axis([n1,n2,1.1*min(x3),1.1*max(x3)]);ylabel('u(n-2)+u(n+2)');2、已知x(n)=3cos(2πn/10),试显示x(n-3)和x(n+3)在0<n<20区间的波形。
数字信号处理matlab实验
三、实验内容及步骤
三角波序列 反三角波序列
观察三角波和反三角波序列的时域和幅频特性
用N=8点FFT分析信号序列xc(n)和xd(n)的幅频特性
观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其 幅频特性曲线。
用N=16点FFT分析这两个信号的幅频特性
在xc(n)和xd(n)末尾补零,
。
1.5
1
0.5
幅度
0 -0.5 -1 0
5
10
15
20 n
25
30
35
40
图 1.2 给出了该差分方程的前41个样点的输出,即该系统的 单位脉冲响应。表达式进原理图输入。
例 3 用 MATLAB 计算差分方程所对应 的系统函数的频率响应
解 例2差分方程所对应的系统函数为:
0.8 0.44 z 1 0.36 z 2 0.02 z 3 H ( z) 1 0.7 z 1 0.45 z 2 0.6 z 3
例1 用MATLAB 下列序列的离散卷积: {-2 0 1 –1 3},{1 2 0 -1} 解 MATLAB程序如下: a=[-2 0 1 -1 3]; b=[1 2 0 -1];
c=conv(a,b);
M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度');
FFT
27
三、实验内容及步骤
高斯序列 Gaussian
观察高斯序列的时域和幅频特性 固定信号xa(n)中参数p=8,
改变q,使q分别等于2,4, 8,观察信号的时域和幅频特性, 了解当q取不同值时,对信号序列的时域幅频特性的影响
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一熟悉MATLAB环境一、实验目的(1)熟悉MATLAB的主要操作命令。
(2)学会简单的矩阵输入和数据读写。
(3)掌握简单的绘图命令。
(4)用MATLAB编程并学会创建函数。
(5)观察离散系统的频率响应。
二、实验内容认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。
在熟悉了MATLAB基本命令的基础上,完成以下实验。
上机实验内容:(1)数组的加、减、乘、除和乘方运算。
输入A=[1234],B=[3456],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。
(2)用MATLAB实现以下序列。
a)x(n)=0.8n0≤n≤15b)x(n)=e(0.2+3j)n0≤n≤15c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)0≤n≤15(n)=x(n+16),绘出四个d)将c)中的x(n)扩展为以16为周期的函数x16周期。
(n)=x(n+10),绘出四个e)将c)中的x(n)扩展为以10为周期的函数x10周期。
(3)x(n)=[1,-1,3,5],产生并绘出下列序列的样本。
a)x 1(n)=2x(n+2)-x(n-1)-2x(n)b)∑=-=51k 2)k n (nx (n) x (4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注。
a)x(t)=sin(2πt)0≤t≤10sb)x(t)=cos(100πt)sin(πt)0≤t≤4s(5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1<n0<n2,绘出该函数的图形,起点为n1,终点为n2。
(6)给定一因果系统)0.9z 0.67z -1)/(1z 2(1H(z)-2-1-1+++=求出并绘制H(z)的幅频响应与相频响应。
(7)计算序列{8-2-123}和序列{23-1-3}的离散卷积,并作图表示卷积结果。
(8)求以下差分方程所描述系统的单位脉冲响应h(n),0≤n<50y(n)+0.1y(n-1)-0.06y(n-2)=x(n)-2x(n-1)三、思考题(1)对于有限长序列,如何用MATLAB计算其DTFT?(2)对于由两个子系统级联或并联的系统,如何用MATLAB计算它们的幅频响应与相频响应?四、实验报告要求(1)简述实验目的及原理。
(2)按实验步骤附上实验程序。
(3)按实验步骤附上有关离散系统的频率特性曲线。
(4)简要回答思考题。
五、与本实验有关的MATLAB 函数x=sin (2*pi*f/fs*n);生成频率为f,采样频率为fs的正弦信号,式中,n=[012…N]。
sum(X);对于向量X,计算X各元素的和。
对于矩阵X,计算X 各列元素之和组成的行向量。
plot(t,y);画出以向量t为坐标的向量y(行或列)的曲线。
向量t和向量y具有相同的维数。
命令plot(s1,t1,s2,t2,s3,t3);将在同一图上画出分别以t1,t2,t3为坐标的向量s1,s2,s3的曲线。
xlabel(‘samples’);在x轴上加上标注。
ylabel(‘amplitude’);在y轴上加上标注。
title(‘sinusoidal signal’);在图的上部加上标题。
y=conv(h,x);计算向量h和x的卷积,结果放在y中。
y=filter(b,a,x);以向量b和a为参数的滤波器对输入信号向量x进行滤波处理。
h=impz(b,a,N);计算b和a为参数的N点滤波器脉冲响应。
[H,f]=freqz(b,a,N,Fs);给定以Hz为单位的采样频率Fs,计算以(b,a)为参数的滤波器N点频率向量f和N点复频率向量H。
该命令用于绘制滤波器的幅频和相频响应。
如果省略左边的[H,f],该命令将直接绘出滤波器的对数幅频和相频响应。
实验二信号的采样与重建一、实验目的(1)在学习本章内容的基础上,通过实验加强本章内容的有关信号采样与重建的基本概念,熟悉相关MATLAB函数。
(2)通过观察采样信号的混叠现象,进一步理解奈奎斯特采样频率的意义。
(3)通过实验,了解数字信号采样率转换过程中的频谱特性。
(4)对实际的音频文件做内插和提取操作,体会低通滤波器在内插和提取中的作用。
二、实验内容认真阅读相关的MATLAB函数帮助文件。
再熟悉MATLAB函数的基础上,完成以下试验。
上机实验内容:(1)一信号是三个正弦信号的和,正弦信号的频率分别为50、500、1000Hz,该信号以8kHz采样。
用适当数量的样本画出该信号。
(2)一信号是三个正弦信号的和,正弦信号的频率分别为50、500、1000Hz,该信号以800Hz采样。
用适当数量的样本画出该信号,并讨论信号的混叠情况。
(3)令,其中f/fs=1/16,即每个周期内有16个点。
试利用MATLAB 编程实现:○1作M=4倍的抽取,使每个周期变成4点。
○2作L=3倍的插值,使每个周期变成48点。
(4)输入信号x(n)为归一化频率分别为f1=0.04,f2=0.3的正弦信号相加而成,N=50,内插因子为5,抽取因子为3,给出按有理因子5/3做采样率变换的输入输出波形。
(5)常见的音频文件采样率为44.1khz。
请找一个wav格式、采样率为44.1khz的音频文件,用MATLAB编写程序,把它转换为采样率为48、32、22.05、16和8khz的音频文件,用播放器分别进行播放,比较音质的变化,并解释原因。
(6)请找一个wav格式、采样率为11.025khz的音频文件,用MATLAB编写程序,把它转换为采样率为44.1khz的音频文件,采用两种方法:○1直接插零;○2插零后滤波(可直接利用MATLAB相关函数),用播放器分别进行播放,比较音质的变化,并解释原因。
三、思考题(1)试说明对于周期信号,应当如何采样,才能保证周期扩展后与原信号保持一致。
(2)模拟抗混叠滤波器的指标是如何确定的,欠采样的情况下是否需要模拟抗混叠滤波器?(3)抽取是否会造成信号频谱成分的缺失?为什么还要这样做?四、实验报告及要求(1)简述实验目的及原理。
(2)按实验步骤附上试验程序。
(3)按实验内容附上有关离散信号的波形或关键样本,对音频信号给出测听的结果。
(4)简要回答思考题。
五、与本实验相关的MATLAB函数y=decimate(x,M);对信号x按整数M作抽取,抽取前后作抗混叠低通滤波,结果放在y中。
y=interp(x,L);对信号x按整数L插零,然后作抗镜像低通滤波,结果放在y中。
y=resample(x,L,M);对信号x按有理因子L/M作采样率转换,结果放在y中。
[y,fs,bits]=wavread(‘filename.wav’);读取音频波形文件,这里y是声音的数组,fs是声音的采样频率,bits是采样样本的二进制位数。
wavwrite(y,fs,bits,‘filename.wav’);将声音的数组y写入音频波形文件,fs是声音的采样频率bits是采样样本的二进制位数。
实验三快速傅立叶变换及其应用一、实验目的(1)在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中函数。
(2)熟悉应用FFT对典型信号进行频谱分析的方法。
(3)了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
(4)熟悉应用FFT实现两个序列的线性卷积和相关。
二、实验内容实验中用到的信号序列:高斯序列衰减正弦序列三角波序列反三角波序列上机实验内容:(1)观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2、4、8,观察他们的时域和频域特性,了解当q取不同值时,对信号时域频域特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域与频域特性的影响,注意当p=多少时会发生明显的泄漏现象,混叠是否也随时出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
(2)观察衰减正弦序列xb(n)的时域和幅频特性。
=0.1,f=0.0625,检查谱峰出现位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和谱峰出现位置,有无混叠和泄露现象?说明产生现象的原因。
(3)观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT 分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列情况和频谱曲线有什么异同?绘出两序列及其幅频特性曲线。
在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?这些变化说明了什么?(4)一个连续信号含有两个频率分量,经采样得已知N=16,Δf分别为1/16和1/64,观察其频谱;当N=128时,Δf不变,其结果有何不同,为什么?(5)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环卷积和线性卷积。
(6)产生一512点的随机序列xe(n),并用xc(n)和xe(n)做线性卷积,观察卷积前后xe(n)频谱的变化。
要求将xe(n)分成8段,分别采用重叠相加法和重叠保留法。
(7)用FFT 分别计算)2,8)((==q p n x a 和xb(n)(a=0.1,f=0.0625)的16点循环相关和线性相关,问一共有多少种结果,他们之间有何异同点。
(8)用FFT 分别计算)2,8)((==q p n x a 和xb(n)(a=0.1,f=0.0625)的自相关函数。
三、思考题(1)实验中的信号序列xc(n)和xd(n),在单位圆上的z 变换频谱和会相同吗?如果不同,说明哪一个低频分量更多一些,为什么?(2)对一个有限长序列进行DFT 等价于将该序列周期延拓后进行DFS 展开,因为DFS 也只是取其中一个周期来运算,所以FFT 在一定条件下也可以用于分析周期信号序列。
如果时正弦序列,f=0.1用16点FFT 来作DFS 运算,得到的频谱是信号本身的真实谱吗?为什么?四、实验报告要求(1)简述实验目的及原理。
(2)按实验步骤附上实验信号序列和幅频特性曲线,分析所得到的图形,说明参数改变对时域和频域的影响。
(3)总结实验中的主要结论。
(4)简要回答简答题。
五、与本实验相关的MATLAB 函数y=exp(X);对向量X 的各元素做指数运算,结果为一向量。
conj(X);对向量X 的各元素做复共轭运算,即将虚部改变符号。
real(X);对向量X的各元素取其实部。
v=randn(size(X));生成同X具有相同维数的正态分布的随机矩阵,通常用于生成高斯白噪声。