matelab实验信号.docx

上传人:b****6 文档编号:7984470 上传时间:2023-01-27 格式:DOCX 页数:21 大小:338.90KB
下载 相关 举报
matelab实验信号.docx_第1页
第1页 / 共21页
matelab实验信号.docx_第2页
第2页 / 共21页
matelab实验信号.docx_第3页
第3页 / 共21页
matelab实验信号.docx_第4页
第4页 / 共21页
matelab实验信号.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

matelab实验信号.docx

《matelab实验信号.docx》由会员分享,可在线阅读,更多相关《matelab实验信号.docx(21页珍藏版)》请在冰豆网上搜索。

matelab实验信号.docx

matelab实验信号

实验1离散时间信号的时域分析

一、实验目的

(1)了解MATLAB语言的主要特点及作用;

(2)熟悉MATLAB主界面,初步掌握MATLAB命令窗和编辑窗的操作方法;

(3)学习简单的数组赋值、数组运算、绘图的程序编写;

(4)了解常用时域离散信号及其特点;

(5)掌握MATLAB产生常用时域离散信号的方法。

二、知识点提示

本章节的主要知识点是利用MATLAB产生数字信号处理的几种常用典型序列、数字序列的基本运算;重点是单位脉冲、单位阶跃、正(余)弦信号的产生;难点是MATLAB关系运算符“==、>=”的使用。

二、实验内容

1.在MATLAB中利用逻辑关系式

来实现

序列,显示范围

(函数命名为impseq(n0,n1,n2))并利用该函数实现序列:

1.%函数文件

functiony=impseq(n0,n1,n2)

n=n1:

1:

n2;

y=[(n-n0)==0];

stem(n,y);

%脚本文件

y=2*impseq(3,-3,10)+impseq(6,-3,10);

x=-3:

1:

10;

stem(x,y)

2.在MATLAB中利用逻辑关系式

来实现

序列,显示范围

(函数命名为stepseq(n0,n1,n2))

并利用该函数实现序列:

%函数文件

functiony=stepseq(n0,n1,n2)

n=n1:

1:

n2;

y=[(n-n0)>=0];

stem(n,y);

%脚本文件

y=stepseq(-2,-5,20)+stepseq(2,-5,20);

x=-5:

1:

20;

stem(x,y)

3.在MATLAB中利用数组运算符“.^”来实现一个实指数序列。

如:

n=0:

1:

50;

x=0.3.^n

stem(n,x)

4.在MATLAB中用函数sin或cos产生正余弦序列,如:

n=0:

0.2:

20;

x=11*sin(0.3*pi*n+pi/5)+5*cos(0.3*pi*n)

stem(n,x)

5.已知

,试显示

区间的波形。

n=0:

1:

20;

x=3*cos(2*pi*n/10);

subplot(2,2,1)

stem(n,x)

n=0:

1:

20;

x2=3*cos(2*pi*(n-3)/10);

subplot(2,2,2)

stem(n,x)

n=0:

1:

20;

x3=3*cos(2*pi*(n+3)/10);

subplot(2,2,3)

stem(n,x)

另种做法:

%生成函数文件

functiony=chap1_5(n)

x=0:

20;

xx=x-n;

y=3*cos(2*pi/10.*xx);

stem(x,y)

%生成脚本文件

n=(0:

1:

20);n=(0:

1:

20);

x1=3*cos(2*pi/10*n);x2=3*cos(2*pi/10*(n-3));

stem(n,x1)stem(n,x2)

n=(0:

1:

20);

x3=3*cos(2*pi/10*(n+3));

stem(n,x3)

6.参加运算的两个序列维数不同,已知

,求

n1=-4:

6;

n01=-2;

x1=[(n1-n01)>=0];

n2=-5:

8;

n02=4;

x2=[(n2-n02)>=0];

n=min([n1,n2]):

max([n1,n2]);

N=length(n);

y1=zeros(1,N);

y2=zeros(1,N);

y1(find((n>=min(n1))&(n<=max(n1))))=x1;

y2(find((n>=min(n2))&(n<=max(n2))))=x2;

x=y1+y2;

stem(n,x);

四、思考题

1.1产生单位脉冲序列和单位阶跃序列各有几种方法?

如何使用?

.答:

产生单位脉冲序列函数:

(1)functiony=impseq(n0,,n1,n2)

n=n1:

n2;

y-[(n-n0)==0];

(2)直接利用单位脉冲函数chrac

产生单位阶跃序列函数:

(1)functiony=stepseq(n0,n1,n2)

n=n1:

n2;

y=[(n-n0)>=0];

(2);利用程序产生单位阶跃序列函数

n=n1:

n2;

y=[zeros91,n0-n1],ones(1,n2-n0+1)]

stem(n,y)

1.2进行序列的相乘运算时应注意什么问题?

进行序列的相乘运算时应该注意两个序列进行相乘运算时,必须是同一时刻的两个数值对应相乘,即同一横坐标点的函数值对应相乘。

实验2离散时间系统的时域分析

一、实验目的

(1)加深对时域信号抽样与恢复的基本原理的理解;

(2)掌握应用线性卷积求解离散时间系统响应的基本方法;

(3)掌握求解离散时间系统冲击响应和频率响应程序的编写方法,了解常用子函数。

二、实验内容

1.已知一个连续时间信号

,取最高有限带宽频率

分别显示原连续时间信号波形和

三种情况下抽样信号波形,并尝试用内插公式重建原信号。

f0=1;

t0=1/f0;

t=0:

0.01:

3*t0;

f=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t);

subplot(4,1,1);

plot(t,f);

fm=5*f0;

fori=1:

3;

fs=i*fm;

ts=1/fs;

n=0:

ts:

3*t0;

f1=sin(2*pi*f0*n)+1/3*sin(6*pi*f0*n);

subplot(4,1,i+1);

stem(n,f1,'filled');

end;

2.在MATLAB中利用内部函数conv来计算两个有限长序列的卷积。

给出两个序列,试求其卷积结果。

x=[5936-8];

h=[18752011149];

y=conv(x,h);

M=length(y)-1;

n=-4:

1:

M-4;

stem(n,y);

xlabel('n');ylabel('幅度');

3.在MATLAB中利用filter函数在给定输入和差分方程时求差分方程的解。

给出如下差分方程:

(1)计算并画出冲击响应

(2)由此

确定系统是否稳定。

N=61;

a=[1];

b=[1-0.90.5];

x=[1zeros(1,N-1)];

k=-10:

1:

50;

y=filter(a,b,x);

stem(k,y)

xlabel('n');ylabel('幅度')

由图像可以看出,该系统函数是有界的,所以该函数是稳定的

4.系统函数表达式如下,试分析系统的频率响应并画出图形。

(幅频、相频)

b=[1,0,1];

a=[1,-1.414,0.64];

[H,w]=freqz(b,a,1000,'whole');

subplot(2,2,1);

plot(w/pi,abs(H));

ylabel('|H|');

title('幅频特性');

subplot(2,2,2);

plot(w/pi,angle(H));

ylabel('|H|');

title('相频特性');

三、思考题

2.1奈奎斯特抽样定理的内容是什么?

2.2什么是内插公式?

在MATLAB中内插公式可以用什么函数来编写程序?

2.3离散线性时不变系统中的差分方程和系统函数有何联系?

公式中的系数在编写程序时须注意什么问题?

2.4MATLAB中提供的conv卷积子函数使用中须满足什么条件?

如果条件不满足应如何处理?

二.思考题

1.答:

奈奎斯特抽样定理:

若频带宽度有限的,要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍信号最高频率。

当抽样频率小于2倍频谱最高频率时,信号的频谱有混叠;当抽样频率大于2倍频谱最高频率时,信号的频谱无混叠。

2.答:

内插公式:

该函数是interpft(x,n),x是包含等间隔取样的周期函数值,n是要求得到的点数。

3.答:

在离散线性时不变系统中,对差分方程进行z变换,然后进行整理,可得到系统函数。

若原式中存在着缺项,必须在相应的对置上补零。

4.答:

用matlab里的conv函数求卷积,只能求有限长序列的卷积。

调用conv函数计算序列卷积时,该函数将向量f1和f2以外的序列样值均视为零,因此,当序列f1(k)或是f2(k)为无限长序列时调用conv函数就可能出现误差。

如果碰到无限长序列时,我们必须将其截断才能求带入到conv函数中,此时,函数将把截断区域外的区间视为零,故conv计算出的卷积只有部分是真实的。

实验3DFS、DFT与FFT

一、实验目的

(1)了解DFS、DFT与DTFT的联系;

(2)加深对FFT基本理论的理解;

(3)掌握用MATLB语言进行傅里叶变换时常用的子函数;

二、实验内容

1.已知

,求

的DFT和IDFT。

要求画出序列傅里叶变换对应的

图形,并画出原信号与傅里叶逆变换

图形进行比较

1.xn=[01234567]

N=length(xn);

n=0:

N-1;

k=0:

N-1;

Xk=xn*exp(-j*2*pi/N).^(n'*k);

x=(Xk*exp(j*2*pi/N).^(n'*k))/N;

figure,subplot(2,2,1),stem(n,xn);

title('x(n)');

subplot(2,2,2),stem(n,abs(x));

title('IDFT|X(k)|');

subplot(2,2,3),stem(k,abs(Xk));

title('|X(k)|');

subplot(2,2,4),stem(k,angle(Xk));

title('arg|X(k)|');

axis([0,N,1.1*min(angle(Xk)),1.1*max(angle(Xk))])

2.已知周期序列的主值

,求

周期重复次数为4次时的DFS。

要求画出原主值和周期序列信号,并画出序列傅里叶变换对应的

图形。

2.xn=[01234567];

N=length(xn);

n=0:

4*N-1;

k=0:

4*N-1;

xn1=xn(mod(n,N)+1);

Xk=xn1*exp(-j*2*pi/N).^(n'*k);

figure,subplot(2,2,1),stem(xn);

title('原主值信号(n)');

subplot(2,2,2),stem(n,xn1);

title('周期序列信号');axis([0,4*N,min(xn1),1.1*max(xn1)])

subplot(2,2,3),stem(k,abs(Xk));

title('|X(k)|');axis([0,4*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))])

subplot(2,2,4),stem(k,angle(Xk));

title('arg|X(k)|');axis([0,4*N,1.1*min(angle(Xk)),1.1*max(angle(Xk))])

 

3.已知

,画出由离散时间傅里叶变换求得的幅度谱

图形。

3.xn=[01234567];

N=length(xn);

n=0:

N-1;

w=linspace(-2*pi,2*pi);

X=xn*exp(-j*n'*w);

figure,subplot(3,1,1),stem(n,xn)

title('x(n)');

subplot(3,1,2),plot(w,abs(X));

axis([-2*pi,2*pi,1.1*min(abs(X)),1.1*max(abs(X))]);

title('幅度谱');

subplot(3,1,3),plot(w,angle(X));

axis([-2*pi,2*pi,1.1*min(angle(X)),1.1*max(angle(X))]);

title('相位谱');

4.已知系统响应为

,输入为

,求系统输出

(提示信息:

利用圆周卷积代替线性卷积)

4.n1=[0:

1:

19];

h=cos(0.5*n1)+sin(0.2*n1);

n2=[0:

1:

9];

x=exp(0.2*n2);

y=conv(x,h);

>>n=length(y)-1;

>>N=0:

1:

n;

>>stem(N,y)

三、实验报告

总结DFT、DTFT与DFS三者之间的关系,列写调试通过的实验程序及产生的曲线图形。

实验4数字滤波器的设计

一、实验目的

(1)加深对脉冲响应不变法、双线性变换法、窗函数法和频率采样法的了解;

(2)掌握MATLAB进行滤波器设计的子函数。

二、实验内容

1.利用脉冲响应不变法,用巴特沃斯滤波器原型设计一个低通滤波器,满足:

,采样频率为10000Hz。

Fs=10000;

wp=0.2*pi;

ws=0.3*pi;

wp=tan(wp/2);

ws=tan(ws/2);

[N,wn]=buttord(wp,ws,0.5,40,'s');

[z,p,k]=buttap(N);

[b,a]=zp2tf(z,p,k);

[B,A]=lp2lp(b,a,wp);

[bz,az]=bilinear(B,A,.5);

[h,w]=freqz(bz,az,256,Fs);

figure

plot(w,abs(h))

gridon

2.利用双线性变换法设计巴特沃斯高通数字滤波器,满足:

通带边界频率为400Hz,阻带边界频率为200Hz,通带衰减小于3dB,阻带衰减大于15dB,采样频率为1000Hz。

(提示信息:

利用函数buttord,butter)

fp=400;

fs=200;

Rp=3;

Rs=15;

wp=fp*2*pi;

ws=fs*2*pi;

FS=1000;

T=1/FS;

Wp=wp/(FS);

Ws=ws/(FS);

wp2=2*tan(Wp/2)/T;

ws2=2*tan(Ws/2)/T;

[N,Wn]=buttord(wp2,ws2,Rp,Rs,'s');

[z,p,k]=buttap(N);

[Bap,Aap]=zp2tf(z,p,k);

[Bbs,Abs]=lp2hp(Bap,Aap,Wn);

[Bbz,Abz]=bilinear(Bbs,Abs,FS);

[hw,w]=freqz(Bbz,Abz,512);

figure()

plot(w/pi,20*log10(abs(hw)));

grid

axis([0,1,-200,10]);

title('ButterworthTypeHighpassDigitalFileter')

xlabel('w/pi')

ylabel('幅度(dB)')

3.用窗函数法设计一个线性相位FIR低通滤波器,满足:

通带边界频率

,阻带边界频率

,阻带衰减不小于50dB,通带波纹不大于1dB。

wp=0.6*pi;

ws=0.7*pi;

wdelta=ws-wp;

N=ceil(8*pi/wdelta)

ifrem(N,2)==0

N=N+1;

end

Nw=N;

wc=(wp+ws)/2;

n=0:

N-1;

alpha=(N-1)/2;

m=n-alpha+0.00001;

hd=sin(wc*m)./(pi*m);

win=(hanning(Nw))';

h=hd.*win;

b=h;

freqz(b,1,512)

N=

80

4.用频率采样法设计一高通数字滤波器,满足:

阻带边界频率

,通带边界频率

,设过渡带中的频率样本值为

M=32;%所需频率采样点个数

Wp=0.8*pi;%通带截止频率

m=0:

M/2;%阻频带上的采样点

Wm=2*pi*m./(M+1);%阻带截止频率

mtr=ceil(Wp*(M+1)/(2*pi));%向正方向舍入ceil(3.5)=4;ceil(-3.2)=-3;

Ad=[Wm>=Wp];

Ad(mtr)=0.28;

Hd=Ad.*exp(-j*0.5*M*Wm);%构造频域采样向量H(k)

Hd=[Hdconj(fliplr(Hd(2:

M/2+1)))];

%fliplr函数实现矩阵的左右翻转conj是求复数的共轭

h=real(ifft(Hd));%h(n)=IDFT[H(k)]

w=linspace(0,pi,1000);%用于产生0,pi之间的1000点行矢量

H=freqz(h,[1],w);%滤波器的幅频特性图

figure

(1)

plot(w/pi,20*log10(abs(H)));%参数分别是归一化频率与幅值

xlabel('w/pi');

ylabel('幅度(dB)');

axis([01-500]);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1