易海博数字信号处理实验报告.docx
《易海博数字信号处理实验报告.docx》由会员分享,可在线阅读,更多相关《易海博数字信号处理实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
易海博数字信号处理实验报告
西安邮电大学
通信与信息工程学院
数字信号处理实验报告
专业班级:
电科1003班
学生姓名:
易海博
学号(班内序号):
03102085(13号)
2012年12月5日
实验一:
信号的表示
一、实验目的:
1、了解MATLAB程序设计语言的基本特点,熟悉MATLAB软件运行
环境。
2、掌握各种信号的建模方式。
3、掌握各种信号的图形表示方法。
4、掌握变量等有关概念,具备初步的将一般数学模型转化为对应的计算机
模型并进行处理的能力
二、实验设备:
PC机
软件
三、实验内容
学习使用软件。
学习信号的图形表示方法,掌握各种信号的建
模方式。
实现单位采样序列δ(n)、单位阶跃序列u(n)、矩形序列()NRn、三角波、方波、锯齿波、Sinc函数。
8.1.1
x=0:
pi/10:
2*pi;
y=2*sin(x);
subplot(2,2,1);bar(x,y,'g');
title('bar(x,y,"g")');axis([0,7,-2,2]);
subplot(2,2,2);stairs(x,y,'b');
title('stairs(x,y,"b")');axis([0,7,-2,2]);
subplot(2,2,3);stairs(x,y,'k');
title('stairs(x,y,"k")');axis([0,7,-2,2]);
subplot(2,2,4);stairs(x,y,'y');
title('stairs(x,y,"y")');axis([0,7,-2,2]);
8.1.2
x=0:
pi/100:
2*pi;
y1=*exp*x).*cos(4*pi*x);
plot(x,y1)
holdon
y2=2*exp*x).*cos(pi*x);
plot(x,y2);
holdoff
8.1.3
x=0:
pi/100:
2*pi;
y1=2*exp*x);
y2=cos(4*pi*x);
plot(x,y1,'-',x,y2,':
')
title('xfrom0to2{\pi}');
xlabel('VariableX');
ylabel('VarialeY');
text,,'曲线y1=2e^{}');
text,,'曲线y2=cos(4{\pi}x)');
legend('y1','y2')
实验二:
FFT频谱分析及应用
一、实验目的:
1、通过实验加深对FFT的理解;
2、熟悉应用FFT对典型信号进行频谱分析的方法。
二、实验设备:
PC机
软件
三、实验内容
使用MATLAB程序实现信号频域特性的分析。
涉及到离散傅立叶变换
(DFT)、快速傅立叶变换(FFT)及信号频率分辨率等知识点。
四、实验原理与方法
在各种信号序列中,有限长序列占重要地位。
对有限长序列可以利用离散傅
立叶变换(DFT)进行分析。
DFT不但可以很好的反映序列的频谱特性,而且易于
用快速算法(FFT)在计算机上进行分析。
有限长序列的DFT是其z变换在单位圆上的等距离采样,或者说是序列傅
立叶的等距离采样,因此可以用于序列的谱分析。
FFT是DFT的一种快速算法,
它是对变换式进行一次次分解,使其成为若干小数据点的组合,从而减少运算量。
在MATLAB信号处理工具箱中的函数fft(x,n),可以用来实现序列的N点
快速傅立叶变换。
经函数fft求得的序列一般是复序列,通常要求出其幅值和相位。
MATLAB中
提供了求复数的幅值和相位的函数:
abs、angle,这些函数一般和fft同时使用。
五、实验报告
(1)模拟信号x(t)=2sin(4πt)+5cos(8πt),以t=(n=0:
N?
1)进行采样,
求:
○1N=40点FFT的幅度频谱,从图中能否观察出信号的2个频谱分量
○2提高采样点数,如N=128,再求该信号的幅度频谱,此时幅度频谱发生了什么变化信号的2个模拟频率和数字频率各为多少FFT频谱分析结果与理论上是否一致
8.2.1
N=40;n=0:
N-1;
t=*n;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
k=0:
N/2;w=2*pi/N*k;
X=fft(x,N);
magX=abs(X(1:
N/2+1));
subplot(2,1,1);stem(n,x,'.');title('signalx(n)');
subplot(2,1,2);plot(w/pi,magX);title('FFTN=40');
xlabel('f(unit:
pi)');ylabel('|X|');grid
N=128;n=0:
N-1;
t=*n;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
k=0:
N/2;w=2*pi/N*k;
X=fft(x,N);
magX=abs(X(1:
N/2+1));
subplot(2,1,1);stem(n,x,'.');title('signalx(n)');
subplot(2,1,2);plot(w/pi,magX);title('FFTN=128');
xlabel('f(unit:
pi)');ylabel('|X|');grid
(2)一个连续信号含三个频谱分量,经采样得以下序列:
x(n)=sin(2π×+cos(2π×+df)n)+cos(2π×+2df)n)
○1N=64,df分别为116、1/64,观察其频谱;
○2N=64、128,df为1/64,做128点得FFT,其结果有何不同
N=64;n=0:
N-1;
df=1/16;
x=sin(2*pi**n)+cos(2*pi*+df)*n)+cos(2*pi*+2*df)*n);
k=0:
N/2;w=2*pi/N*k;
X=fft(x,N);
X=fft(x,N);
magX=abs(X(1:
N/2+1));
subplot(2,1,1);stem(n,x,'.');title('signalx(n)');
subplot(2,1,2);plot(w/pi,magX);title('FFTN=40');
xlabel('f(unit:
pi)');ylabel('|X|');grid
N=64;n=0:
N-1;
df=1/64;
x=sin(2*pi**n)+cos(2*pi*+df)*n)+cos(2*pi*+2*df)*n);
k=0:
N/2;w=2*pi/N*k;
X=fft(x,N);
X=fft(x,N);
magX=abs(X(1:
N/2+1));
subplot(2,1,1);stem(n,x,'.');title('signalx(n)');
subplot(2,1,2);plot(w/pi,magX);title('FFTN=40');
xlabel('f(unit:
pi)');ylabel('|X|');grid
N=128;n=0:
N-1;
df=1/64;
x=sin(2*pi**n)+cos(2*pi*+df)*n)+cos(2*pi*+2*df)*n);
k=0:
N/2;w=2*pi/N*k;
X=fft(x,N);
X=fft(x,N);
magX=abs(X(1:
N/2+1));
subplot(2,1,1);stem(n,x,'.');title('signalx(n)');
subplot(2,1,2);plot(w/pi,magX);title('FFTN=40');
xlabel('f(unit:
pi)');ylabel('|X|');grid
(3)被噪声污染得信号,比较难看出所包含得频率分量,如一个由50Hz和120Hz正弦信号构成的信号,受零均值随机噪声的干扰,数据采样率为1000Hz,试用FFT函数来分析其信号频率成分,要求:
○1画出时域波形;○2分析信号功率谱密度。
t=0:
:
;x=sin(2*pi*50*t)+cos(2*pi*120*t);
y=x+*randn(1,length(t));
subplot(3,1,1);plot(t,x);
subplot(3,1,2);plot(t,y);
Y=fft(y,512);
P=Y.*conj(Y)/512;
f=1000*(0:
255)/512;
subplot(3,1,3);plot(f,P(1:
256));
实验三:
信号的运算-卷积
一、实验目的:
1、掌握信号的线性卷积运算。
2、掌握信号的循环卷积运算。
3、掌握信号循环卷积计算线性卷积的条件。
二、实验设备:
PC机
软件
三、实验内容
学习使用软件进行建模。
学习信号的卷积运算的MATLAB实
现。
实现信号的线性卷积运算、应用DFT实现线性卷积运算、验证循环卷积计算线性卷积的条件
五、实验报告
(1)假设卷积下面信号
选定循环卷积的长度为N=21。
确定的哪些数值与线性卷积结果中的数值相同。
编写程序代码并输出图形,并分析错误数据的原因,怎样才能使两者数据相同。
functionmy_mainFuntion()
n1=0:
1:
12;
x1=.^n1;
h=ones(0,12);
N=length(x1)+length(h)-1;
n=0:
N-1;
ny=0:
20;
y1=circonvt(x1,h,21);
y2=circonvt(x1,h,N);
x1=[x1zeros(1,N-length(x1))];
h=[hzeros(1,N-length(h))];
X1=fft(x1,N);
H=fft(h,N);
X=X1.*H;
x=ifft(X);
x=real(x);
subplot(2,2,1);stem(n,x1);title('x1(n)');axis([0,33,0,1]);
subplot(2,2,2);stem(n,h);title('h(n)');axis([0,33,0,1]);
subplot(2,2,3);stem(ny,y1,'fill');title('21点循环卷积');axis([0,33,0,8]);
holdon;subplot(2,2,4);stem(n,x);title('线性卷积');axis([0,33,0,8]);
subplot(2,2,3);stem(n,x,'r','--');axis([0,33,0,8]);
holdoff;
functiony=circonvt(x1,x2,N)
if(length(x1)>N|length(x2)>N)
error('N必须大于等于x的长度');
end
x1=[x1zeros(1,N-length(x1))];
x2=[x2zeros(1,N-length(x2))];
X1=fft(x1,N);X2=fft(x2,N);X=X1.*X2;
y=ifft(X,N);y=real(y)
(2)假设卷积下面信号
选定循环卷积的长度为N=21。
确定的哪些数值与线性卷积
结果中的数值相同。
编写程序代码并输出图形,怎样才能使两者数据相同。
并分析既然h(n)自开始就有零点,好点和差点在哪里
n1=0:
1:
12;
x1=.^n1;
h=one