数字信号处理实验答案.docx

上传人:b****3 文档编号:4973081 上传时间:2023-05-07 格式:DOCX 页数:39 大小:207.34KB
下载 相关 举报
数字信号处理实验答案.docx_第1页
第1页 / 共39页
数字信号处理实验答案.docx_第2页
第2页 / 共39页
数字信号处理实验答案.docx_第3页
第3页 / 共39页
数字信号处理实验答案.docx_第4页
第4页 / 共39页
数字信号处理实验答案.docx_第5页
第5页 / 共39页
数字信号处理实验答案.docx_第6页
第6页 / 共39页
数字信号处理实验答案.docx_第7页
第7页 / 共39页
数字信号处理实验答案.docx_第8页
第8页 / 共39页
数字信号处理实验答案.docx_第9页
第9页 / 共39页
数字信号处理实验答案.docx_第10页
第10页 / 共39页
数字信号处理实验答案.docx_第11页
第11页 / 共39页
数字信号处理实验答案.docx_第12页
第12页 / 共39页
数字信号处理实验答案.docx_第13页
第13页 / 共39页
数字信号处理实验答案.docx_第14页
第14页 / 共39页
数字信号处理实验答案.docx_第15页
第15页 / 共39页
数字信号处理实验答案.docx_第16页
第16页 / 共39页
数字信号处理实验答案.docx_第17页
第17页 / 共39页
数字信号处理实验答案.docx_第18页
第18页 / 共39页
数字信号处理实验答案.docx_第19页
第19页 / 共39页
数字信号处理实验答案.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数字信号处理实验答案.docx

《数字信号处理实验答案.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验答案.docx(39页珍藏版)》请在冰点文库上搜索。

数字信号处理实验答案.docx

数字信号处理实验答案

实验一熟悉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。

clearall;

a=[1234];

b=[3456];

c=a+b;

d=a-b;

e=a.*b;

f=a./b;

g=a.^b;

n=1:

4;

subplot(4,2,1);stem(n,a);

xlabel('n');xlim([05]);ylabel('A');

subplot(4,2,2);stem(n,b);

xlabel('n');xlim([05]);ylabel('B');

subplot(4,2,3);stem(n,c);

xlabel('n');xlim([05]);ylabel('C');

subplot(4,2,4);stem(n,d);

xlabel('n');xlim([05]);ylabel('D');

subplot(4,2,5);stem(n,e);

xlabel('n');xlim([05]);ylabel('E');

subplot(4,2,6);stem(n,f);

xlabel('n');xlim([05]);ylabel('F');

subplot(4,2,7);stem(n,g);

xlabel('n');xlim([05]);ylabel('G');

(2)用MATLAB实现下列序列:

a)x(n)=0.8n0≤n≤15

b)x(n)=e(0.2+3j)n0≤n≤15

c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)0≤n≤15

d)将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。

e)将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期。

clearall;

N=0:

15;

%a)x(n)=0.8n0≤n≤15

xa=0.8.^N;

figure;subplot(2,1,1);stem(N,xa);xlabel('n');xlim([016]);ylabel('xa');

%b)x(n)=e(0.2+3j)n0≤n≤15

xb=exp((0.2+3*j)*N);

subplot(2,1,2);stem(N,xb);

xlabel('n');xlim([016]);ylabel('xb');figure;

%c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)0≤n≤15

xc=3*cos(0.125*pi*N+0.2*pi)+2*sin(0.25*pi*N+0.1*pi);

subplot(3,1,1);stem(N,xc);xlabel('n');xlim([016]);ylabel('xc');

%d)将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。

k=0:

3;m=0;

fori=1:

4

forj=1:

16

m=m+1;

n(m)=N(j)+16*k(i);

x16(m)=3*cos(0.125*pi*n(m)+0.2*pi)+2*sin(0.25*pi*n(m)+0.1*pi);

end

end

subplot(3,1,2);stem(n,x16);xlabel('n');ylabel('x16');

%e)将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期。

forj=1:

10

x10(j)=x16(j);

end

fori=1:

3

form=1:

10

x10(i*10+m)=x10(m);

end

end

n=1:

40;

subplot(3,1,3);stem(n,x10);xlabel('n');ylabel('x10');

(3)x(n)=[1,-1,3,5],产生并绘出下列序列的样本:

a)x1(n)=2x(n+2)-x(n-1)-2x(n)

b)

clearall

n=1:

4;

T=4;

x=[1-135];

x(5:

8)=x(1:

4);

subplot(2,1,1);stem(1:

8,x);grid;

fori=1:

4

ifi-1<0

x1(i)=2*x(i+2)-x(i-1)-2*x(i);

else

x1(i)=2*x(i+2)-x(i-1+T)-2*x(i);

end

end

x1(5:

8)=x1(1:

4);

subplot(2,1,2);stem(1:

8,x1);grid;

(4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注:

a)x(t)=sin(2πt)0≤t≤10s

b)x(t)=cos(100πt)sin(πt)0≤t≤4s

ta=0:

0.05:

10;

xa=sin(2*pi*ta);

subplot(2,1,1);plot(ta,xa);

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

tb=0:

0.01:

4;

xb=cos(100*pi*tb).*sin(pi*tb);

subplot(2,1,2);plot(tb,xb);

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

(5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1

n0=5;ns=1;nf=10;%ns为起点;nf为终点;在=n=n0处生成单位阶跃序列

n=[ns:

nf];

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

stem(n,x);

(6)给一定因果系统

求出并绘制H(z)的幅频响应与相频响应。

clearall;

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);

ph=angle(h);

subplot(2,1,2);plot(w,ph);

(7)计算序列{8-2-123}和序列{23-1-3}的离散卷积,并作图表示卷积结果。

clearall;

a=[8-2-123];

b=[23-1-3];

c=conv(a,b);%计算卷积

M=length(c)-1;

n=0:

1:

M;

stem(n,c);

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

(8)求以下差分方程所描述系统的单位脉冲响应h(n),0≤n≤50

y(n)+0.1y(n-1)-0.06y(n-2)=x(n)-2x(n-1)

clearall;

N=50;

a=[1-2];

b=[10.1-0.06];

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

k=0:

1:

N-1;

y=filter(a,b,x);

stem(k,y);

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

实验二信号的采样与重建

一,实验目的

(1)通过观察采样信号的混叠现象,进一步理解奈奎斯特采样频率的意义。

(2)通过实验,了解数字信号采样转换过程中的频率特征。

(3)对实际的音频文件作内插和抽取操作,体会低通滤波器在内插和抽取中的作用。

二,实验内容

(1)采样混叠,对一个模拟信号Va(t)进行等间采样,采样频率为200HZ,得到离散时间信号V(n).Va(t)由频率为30Hz,150Hz,170Hz,250Hz,330Hz的5个正弦信号的加权和构成。

Va(t)=6cos(60pi*t)+3sin(300pi*t)+2cos(340pi*t)+4cos(500pi*t)+10sin(660pi*t)观察采样后信号的混叠效应。

程序:

clear,

closeall,

t=0:

0.1:

20;

Ts=1/2;

n=0:

Ts:

20;

V=8*cos(0.3*pi*t)+5*cos(0.5*pi*t+0.6435)-10*sin(0.7*pi*t);

Vn=8*cos(0.3*pi*n)+5*cos(0.5*pi*n+0.6435)-10*sin(0.7*pi*n);

subplot(221)

plot(t,V),

gridon,

subplot(222)

stem(n,Vn,'.'),

gridon,

(2)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,N=100,按因子M=2作抽取:

(1)不适用低通滤波器;

(2)使用低通滤波器。

分别显示输入输出序列在时域和频域中的特性。

程序:

clear;

N=100;

M=2;

f1=0.043;

f2=0.31;

n=0:

N-1;

x=sin(2*pi*f1*n)+sin(2*pi*f2*n);

y1=x(1:

2:

100);

y2=decimate(x,M,'fir');

figure

(1);

stem(n,x(1:

N));

title('inputsequence');

xlabel('n');ylabel('fudu');

figure

(2);

n=0:

N/2-1;

stem(n,y1);

title('outputsequencewithoutLP');

xlabel('n');ylabel('fudu');

figure(3);

m=0:

N/M-1;

stem(m,y2(1:

N/M));

title('outputsequencewithLP');

xlabel('n');ylabel('fudu');

figure(4);

[h,w]=freqz(x);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheinputsequence');

xlabel('w');ylabel('fudu');

figure(5);

[h,w]=freqz(y1);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequencewithoutLP');

xlabel('w');ylabel('fudu');

figure(6);

[h,w]=freqz(y2);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequencewithoutLP');

xlabel('w');ylabel('fudu');

(3)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,长度N=50,内插因子为2.

(1)不适用低通滤波器;

(2)使用低通滤波器。

分别显示输入输出序列在时域和频域中的特性。

程序:

clear,

closeall,

N=50;

L=2;

f1=0.043;

f2=0.31;

n=0:

N-1;

x=sin(2*pi*f1*n)+sin(2*pi*f2*n);

figure

(1);

stem(n,x(1:

N));

title('inputsequence');

xlabel('n');ylabel('fudu');

y1=zeros(1,N*2);

y1(1:

2:

N*2)=x;

figure

(2);

m=0:

N*L-1;

stem(m,y1(1:

N*L));

title('outputsequence');

xlabel('n');ylabel('fudu');

y2=interp(x,L);

figure(3);

m=0:

N*L-1;

stem(m,y2(1:

N*L));

title('outputsequence');

xlabel('n');ylabel('fudu');

figure(4);

[h,w]=freqz(x);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheinputsequence');

xlabel('w');ylabel('fudu');

figure(5);

[h,w]=freqz(y1);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequence');

xlabel('w');ylabel('fudu');

figure(6);

[h,w]=freqz(y2);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequence');

xlabel('w');ylabel('fudu');

2.(3)令x(n)=cos(2*pi*f*n/fs),其中f/fs=1/16,即每个周期内有16个点。

试用MATLAB编程实现:

1).作M=4倍的抽取,使每个周期变成4点。

程序:

clear,

closeall,

N=100;

M=4;

n=0:

N-1;

x=cos(2*pi*n*(1/16));

stem(n,x(1:

N));

title('inputsequence');

xlabel('n');ylabel('fudu');

y1=x(1:

4:

100);

y2=decimate(x,M,'fir');

figure

(2);

m=0:

N/4-1;

stem(m,y1);

title('outputsequence');

xlabel('n');ylabel('fudu');

figure(3);

m=0:

N/M-1;

stem(m,y2(1:

N/M));

title('outputsequence');

xlabel('n');ylabel('fudu');

figure(4);

[h,w]=freqz(x);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheinputsequence');

xlabel('w');ylabel('fudu');

figure(5);

[h,w]=freqz(y1);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequence');

xlabel('w');ylabel('fudu');

figure(6);

[h,w]=freqz(y2);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequence');

xlabel('w');ylabel('fudu');

2).作L=3倍的插值,使每个周期变成48点。

程序:

clear,

closeall,

N=50;

L=3;

n=0:

N-1;

x=cos(2*pi*n*(1/16));

figure

(1);

stem(n,x(1:

N));

title('inputsequence');

xlabel('n');ylabel('fudu');

y1=zeros(1,N*3);

y1(1:

3:

N*3)=x;

figure

(2);

m=0:

N*3-1;

stem(m,y1(1:

N*3));

title('outputsequence');

xlabel('n');ylabel('fudu');

y2=interp(x,L);

figure(3);

m=0:

5:

N*L-1;

stem(m,y2(1:

5:

N*L));

title('outputsequence');

xlabel('n');ylabel('fudu');

figure(4);

[h,w]=freqz(x);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheinputsequence');

xlabel('w');ylabel('fudu');

figure(5);

[h,w]=freqz(y1);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequence');

xlabel('w');ylabel('fudu');

figure(6);

[h,w]=freqz(y2);

plot(w(1:

64),abs(h(1:

64)));

title('frequencyspectrumoftheoutputsequence');

xlabel('w');ylabel('fudu');

(4).输入信号x(n)为归一化频率分别是f1=0.04,f2=0.3的正弦信号相加而成,N=50,内插因子为5,抽取因子为3,给出按有理因子5/3做采样率转换的输入输出波形。

程序:

clear,

closeall,

N=50;

M=3;

L=5;

f1=0.04;

f2=0.3;

n=0:

N-1;

x=sin(2*pi*f1*n)+sin(2*pi*f2*n);

y=resample(x,L,M);

figure

(1);

stem(n,x(1:

N));

title('inputsequence');

xlabel('n');ylabel('fudu');

figure

(2);

m=0:

N-1;

stem(m,y(1:

N));

title('outputsequence');

xlabel('n');ylabel('fudu');

figure(3);

[h,w]=freqz(x);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheinputsequence');

xlabel('w');ylabel('fudu');

figure(4);

[h,w]=freqz(y);

plot(w(1:

512),abs(h(1:

512)));

title('frequencyspectrumoftheoutputsequence');

xlabel('w');ylabel('fudu');

实验三快速Fourier变换(FFT)及其应用

?

一、实验目的

?

?

?

1.?

在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉FFT子程序。

?

?

?

2.?

熟悉应用FFT对典型信号进行频谱分析的方法。

?

?

?

3.?

了解应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。

?

?

?

4.?

熟悉应用FFT实现两个序列的线性卷积的方法。

?

?

?

5.?

初步了解用周期图法作随机信号谱分析的方法。

?

二、实验原理与方法

?

在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使

用离散Fouier变换(DFT)。

这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:

反变换为:

?

?

?

有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。

?

?

?

FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。

它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。

常用的FFT是以2为基数的,其长度

它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。

?

?

?

(一)、在运用DFT进行频谱分析的过程中可能产生三种误差:

?

?

?

(1)?

?

?

混叠

?

?

?

序列的频谱时被采样信号的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。

避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。

?

?

?

(2)?

?

?

泄漏

?

?

?

实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。

泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。

为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。

?

?

?

(3)?

?

?

栅栏效应

?

?

?

DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能别我们观察到。

?

?

?

减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。

?

?

?

(二)、用FFT计算线性卷积

?

?

?

用FFT可以实现两个序列的圆周卷积。

在一定的条件下,可以使圆周卷积等于线性卷积。

一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度

N≥N1+N2

对于长度不足N的两个序列,分别将他们补零延长到N。

?

?

?

当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。

有两种方法:

重叠相加法。

将长序列分成与短序列相仿的片段,分别用FFT对它们作线性卷积,再将分段卷积各段重叠的部分相加构成总的卷积输出。

?

重叠保留法。

这种方法在长序列分段时,段与段之间保留有互相重叠的部分,在构成总的卷积输出时只需将各段线性卷积部分直接连接起来,省掉了输出段的直接相加。

?

?

?

(三)、用周期图法(平滑周期图的平均法)对随机信号

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2