数字信号处理实验二报告.docx
《数字信号处理实验二报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验二报告.docx(27页珍藏版)》请在冰豆网上搜索。
数字信号处理实验二报告
实验二序列的DTFT
一、实验内容
(一)编写子函数计算
给定序列
的DTFT,使得一个频率周期内离散的点数为M,函数的输入参数输入序列的取值、时间坐标和M的数值,要求用两层for循环形式编写程序,频率取值范围为
。
注:
子函数形式为function[X,w]=dtft2(x,n,M),其中X为信号x的DTFT,w为X对应的频率点。
(二)对长度为N的矩形序列
1、从理论上计算出N=4时矩形序列的频谱,写出幅度谱和相位谱的表达式。
2、M=1024,N=4,用编写的子函数计算矩形序列的频谱,画出归一化的幅度谱、相位谱和增益(dB形式表示归一化的幅度谱)的图形,标注坐标轴的含义和单位。
3、M=1024,分别取N=5,20,100,仔细观察图形,计算并讨论N的取值对信号幅度谱的最大值、过零点个数、第一旁瓣幅度与最大值的比值、主瓣面积、第一旁瓣面积、相位谱的形状的影响,得出你的结论。
(提示:
可以利用max函数求最大值,sum函数求面积。
)
4、N=128,分别取M=8,64,256,1024,仔细观察图形,讨论M的取值对信号幅度谱、衰减和相位谱的形状的影响,得出你的结论。
(三)用计算机计算分析序列
和
的频谱。
1、理论计算以上两个信号的频谱和周期,用计算机画出其幅度谱的图形,标注坐标轴的含义和单位。
2、利用实验内容一编写的子函数计算以上两个信号的频谱,时间取值范围分别为
和
,其中M=128。
分别取N=8,16,128,256。
画图幅度谱和相位谱,仔细观察,与两信号的理想频谱相比较,得到M和N的取值与信号的理想频谱的有关结论。
对正弦信号频谱分析时,如何选取信号长度和离散频率的点数,数值计算时才能得到信号理想频谱。
(由于原序列的频谱为离散谱,画图时可以考虑用stem画。
)
二.编程原理、思路和公式
(一)编写子函数计算
给定序列
的DTFT,使得一个频率周期内离散的点数为M,函数的输入参数输入序列的取值、时间坐标和M的数值,要求用两层for循环形式编写程序,频率取值范围为
。
注:
子函数形式为function[X,w]=dtft2(x,n,M),其中X为信号x的DTFT,w为X对应的频率点。
思路:
根据公式=,
有两个变化的量,一个是w(k),一个是n,一次是在n确定时对w(k)进行循环,然后再嵌套一个内循环,对n进行循环,实现求和。
从而求出序列x(n)的频谱。
※子程序:
function[X,w]=dtft2(x,n,M)%定义函数[X,w]
w=-pi:
(2*pi/M):
(pi-2*pi/M);%定义w的取值范围以及角频率抽样间隔
L=length(n);%序列的长度
for(k=1:
M)%外层循环,对w循环M次
sum=0;%对求和变量设初值
for(m=1:
L)%内层循环,对n的循环,循环的次数等于n的长度N
sum=sum+x(m)*exp(-j*w(k)*n(m));%求和公式
X(k)=sum;%把求和的值赋给sum
end%结束内循环
end%结束外循环
二、对长度为N的矩形序列
1、从理论上计算出N=4时矩形序列的频谱,写出幅度谱和相位谱的表达式。
幅度谱:
|X)|=||
相位谱:
argX)=w
2、M=1024,N=4,用编写的子函数计算矩形序列的频谱,画出归一化的幅度谱、相位谱和增益(dB形式表示归一化的幅度谱)的图形,标注坐标轴的含义和单位。
作出矩形序列的频谱程序:
主程序:
M=1024;%定义M的初值
n1=-100;%定义n的左值区间
n2=100;%定义n的右值区间
n=n1:
n2;%定义n的取值范围
L=length(n);%L为序列的长度
N=4;%定义N的值
w=-pi:
(2*pi/M):
(pi-2*pi/M);%w从-pi到pi取值,角频率间隔为2*pi/M
x=zeros(1,L);%先对整个序列全部赋值为0
x(-n1+1:
-n1+1+N-1)=1;%定义N=4时的矩形序列
[X,w]=dtft2(x,n,M);%调用子程序
magX=abs(X);%取幅度谱部分
angX=angle(X);%取相位谱部分
subplot(3,1,1);plot(w,X),gridon;%作3行1列的图,第1个图为w与X的图,即频谱
xlabel('');title(‘频谱’);ylabel('');%定义坐标轴的含义及图形的标题
subplot(3,1,2);plot(w,magX),gridon;%作3行1列的图,第2个图为w与magX的图,即幅度谱
xlabel('');title('幅度谱/模值部分');ylabel('模值');%定义坐标轴的含义及图形的标题
subplot(3,1,3);plot(w,angX),gridon;%作3行1列的图,第3个图为w与angX的图,即相位谱
xlabel('');title('相位谱/相角部分');ylabel('弧度');%定义坐标轴的含义及图形的标题
子程序:
function[X,w]=dtft2(x,n,M)%定义函数[X,w]
w=-pi:
(2*pi/M):
(pi-2*pi/M);%定义w的取值范围以及角频率抽样间隔
L=length(n);%序列的长度
for(k=1:
M)%外层循环,对w循环M+1次
sum=0;%对求和变量设初值
for(m=1:
L)%内层循环,对n的循环,循环的次数等于n的长度N
sum=sum+x(m)*exp(-j*w(k)*n(m));%求和公式
X(k)=sum;%把求和的值赋给sum
end%结束内循环
end%结束外循环
图形见图1-1:
图1-1N=4时的频谱、幅度谱和相位谱
编写归一化程序:
M=1024;%定义M的初值
n1=-100;%定义n的左值区间
n2=100;%定义n的右值区间
n=n1:
n2;%定义n的取值范围
L=length(n);%L为序列的长度
N=4;%定义N的值
w=-pi:
(2*pi/M):
(pi-2*pi/M);%w从-pi到pi取值,角频率间隔为2*pi/M
x=zeros(1,L);%先对整个序列全部赋值为0
x(-n1+1:
-n1+1+N-1)=1;%定义N=4时的矩形序列
[X,w]=dtft2(x,n,M);%调用子程序
magX=abs(X);%取幅度谱部分
angX=angle(X);%取相位谱部分
y=(magX)/max(magX);%对整个幅度谱除以最大幅值,达到使最大值为1的目的,即归一化
subplot(2,1,1);plot(w,y),gridon;%作2行1列图形,第一幅图为归一化的幅度谱
xlabel('');title('归一化幅度谱/模值部分');ylabel('模值');%标注坐标轴的意义
subplot(2,1,2);plot(w,angX),gridon;%作2行1列图形,第二幅图为相位谱
xlabel('');title('归一化相位谱/相角部分');ylabel('弧度');%标注坐标轴的意义
归一化以后的图形见图1-2:
图1-2N=4时归一化的幅度谱、相位谱
编写增益程序:
M=1024;%定义M的初值
n1=-100;%定义n的左值区间
n2=100;%定义n的右值区间
n=n1:
n2;%定义n的取值范围
L=length(n);%L为序列的长度
N=4;%定义N的值
w=-pi:
(2*pi/M):
(pi-2*pi/M);%w从-pi到pi取值,角频率间隔为2*pi/M
x=zeros(1,L);%先对整个序列全部赋值为0
x(-n1+1:
-n1+1+N-1)=1;%定义N=4时的矩形序列
[X,w]=dtft2(x,n,M);%调用子程序
magX=20*log10(abs(X));%取幅度谱部分,化为以dB为单位的形式
angX=angle(X);%取相位谱部分
y=(magX)/max(magX);%对整个幅度谱除以最大幅值,达到使最大值为1的目的,即归一化
plot(w,y),gridon;%作y关于w的图形,即增益谱
xlabel('');title('增益谱');ylabel('幅值');%定义坐标轴的含义
增益谱见图1-3:
图1-3N=4时增益(dB形式表示归一化的幅度谱)的图形
3、M=1024,分别取N=5,20,100,仔细观察图形,计算并讨论N的取值对信号幅度谱的最大值、过零点个数、第一旁瓣幅度与最大值的比值、主瓣面积、第一旁瓣面积、相位谱的形状的影响,得出你的结论。
(提示:
可以利用max函数求最大值,sum函数求面积。
)
程序:
clear;%清内存
M=1024;%定义M的初值为1024
N=[5,20,100];%定义N的取值序列
fork=1:
3%开始for循环,对k从1到3,分别对应N从5,20,到100
x=ones(1,N(k));%取得矩形序列
n=0:
N(k)-1;%定义n的取值区间
[X,w]=dtft2(x,n,M);%调用子函数[X,w]
magX=abs(X);%将X的模值赋值给magX
y=(magX)/max(magX);%将幅度谱除以整个谱上的最大值,达到归一化的目的
angX=angle(X);%将X的相位值赋值给angX
z=20*log10(magX);%将magX转换为dB单位的形式赋给z
figure
(1);%画图的第一个窗口
subplot(3,1,k);plot(w,y);holdon;gridon;%第一个窗口中,三张图从上到下分别为N=5,N=20,N=100时的幅度谱图形
xlabel('w');title(‘幅度谱’);ylabel('幅度');%标注坐标轴的意义
figure
(2);%画图的第二个窗口
subplot(3,1,k);plot(w,angX);holdon;gridon;%第二个窗口中,三张图从上到下分别为N=5,N=20,N=100时的相位谱图形
xlabel('w');title(‘相位谱’);ylabel('相位');%标注坐标轴的意义
figure(3);%画图的第三个窗口
subplot(3,1,k);plot(w,z);holdon;gridon;%第三个窗口中,三张图从上到下分别为N=5,N=20,N=100时的增益谱图形
xlabel('w');title(‘增益谱’);ylabel('增益/dB');%标注坐标轴的意义
end%结束for循环
作出的幅度谱见图1-4所示:
图1-4N=5,N=20,N=100所对应的幅度谱
作出的相位谱见图1-5所示:
图1-5N=5,N=20,N=100所对应的相位谱
作出的增益谱如图1-6所示:
图1-6N=5,N=20,N=100所对应的增益谱
下面进行相关参数的比较:
N对信号幅度谱最大值的影响:
取得最大值程序:
clc;%清屏
clear;%清内存
M=1024;%定义M的初值
N=[5,20,100];%N的取值序列
s=[0,0,0];%给s赋值为0序列
fork=1:
3%对k从1到3进行循环
x=ones(1,N(k));%取得矩形序列
n=0:
N(k)-1;%定义n的取值区间
[X,w]=dtft2(x,n,M);%调用子函数[X,w]
s(k)=max(abs(X));%使用max函数获得X幅值的最大值,并赋值给s
end%结束for循环
运行结果:
>>s
s=
520100
>>
结论:
信号幅度谱的最大值随着N的增大而增大,幅度谱的最大值即为N值。
N对过零点个数的影响
计算过零点个数程序:
(经观察,过零点在幅度谱图中即为最小值点)
magX=abs(X);%将X的幅度谱赋给magX
c=1;%给c赋初值为1
forp=2:
1023%因为下面涉及到使用p+1和P-1,所以对p定义为从2到1023
if(magX(p)l(c)=p;%输出当前极小值对应的横坐标所对应的点数
c=c+1;
end%结束if条件语句
end%结束for循环
i=1;
fort=2:
1023
if(magX(t)>magX(t+1)&magX(t)>magX(t-1))%判断magX(t)为极大值的条件
h(i)=t;%输出当前极大值对应的横坐标所对应的点数
i=i+1;
end%结束if条件语句
end%结束for循环
l,h%令程序执行后输出l,h的值
运行结果:
(此时N=5)
l:
103308718923一共4个数
h:
216513810一共3个数
运行结果:
(此时N=20)
l:
52103155206257308359411462564615667718769820871923974
一共18个数
h:
2778129181232284335387440513586639691742794845897948999一共19个数
运行结果:
(此时N=100)
l:
11213242526273839310311412413414415516517518519620621622623724725726727728829830831832933934935937038039040041142143144145246247248249350352353354455456457458559560561562663664665666767768769770871872873874975976977978980081082083084185186187188289290291292393394395396497498499410051015一共98个数
h:
616273747576878889810911912913914916017018019020121122123124225226227228329330331332433434435436537538539540641642643644745746747748849851352853854955956957959060061062063164165166167268269270271372373374375476477478479580581582583684685686687788789790791792893894895896997998999910101020一共99个数
结论:
随着N的增大,过零点个数增多。
N对第一旁瓣幅度与最大值的比值的影响:
思路:
一共取了1024个点,因为幅度谱是关于最大值点对应的横坐标所对应的直线对称,所以第513个点对应于它的最大值点,观察h的取值,第513个点临近的第n个点即对应第一旁瓣最大值所对应的横坐标,所以进行计算如下:
N=5时:
程序:
f1=magX(216)/magX(513)
运行结果:
f1=0.2500
N=20时:
程序:
f2=magX(440)/magX(513)
运行结果:
f2=0.2190
N=100时:
程序:
f3=magX(498)/magX(513)
运行结果:
f3=0.2161
结论:
随着N的增加,第一旁瓣幅度与最大值的比值逐渐减小,且减小的幅度越来越小。
N对主瓣面积的影响
思路:
因为我们将幅度谱离散化了,所以利用近似的方法计算主瓣面积,将主瓣划分为众多个小矩形的面积进行相加,每一个小矩形的长为对应的幅度值,宽为取的角频率间隔,即2*pi/M,所以程序如下:
计算主瓣面积的程序:
N=5时:
程序:
d1=sum(magX(308:
717))*2*pi/M
运行结果:
d1=7.4931
N=20时:
程序:
d2=sum(magX(462:
563))*2*pi/M
运行结果:
d2=7.4125
N=100时:
程序:
d3=sum(magX(503:
522))*2*pi/M
运行结果:
d3=7.3940
结论:
随着N的增大,主瓣面积逐渐减小,且减小的幅度很小。
N对第一旁瓣面积的影响:
思路:
与计算主瓣面积的方法类似
N=5时:
程序:
r1=sum(magX(103:
307))*2*pi/M
运行结果:
r1=1.0088
N=20时:
程序:
r2=sum(magX(411:
461))*2*pi/M
运行结果:
r2=0.8755
N=100时:
程序:
r3=sum(magX(493:
502))*2*pi/M
运行结果:
r3=0.8695
结论:
随着N的增大,第一旁瓣面积逐渐减小,且减小的幅度越来越小。
N对相位谱形状的影响:
将三个不同N值对应的相位谱放在一张图上,如图1-7所示:
图1-7 N=5,N=20,N=100所对应的相位谱
结论:
随着N的增大,相位谱密集度增大。
4、N=128,分别取M=8,64,256,1024,仔细观察图形,讨论M的取值对信号幅度谱、衰减和相位谱的形状的影响,得出你的结论。
程序:
N=128;%定义N的值
M=[8,64,256,1024];%定义M的取值序列
fort=1:
4%对t从1到4开始循环
x=ones(1,N);%生成矩形序列
n=0:
N-1;%定义n的取值范围
[X,w]=dtft2(x,n,M(t));%调用子程序
v1=abs(X);%将模值赋值给v1
angX=angle(X);%将相位值赋值给angX
v2=20*log10(X);%对幅度谱化为以dB为单位,即增益谱形式
figure
(1);%第一个窗口
subplot(4,1,t);plot(w,v1);holdon;gridon;%第一个窗口有4个图,4行1列排列,分别是M取四个不同值时的幅度谱
xlabel('w');title('幅度谱');ylabel('幅度');%定义坐标轴的意义
figure
(2);%第二个窗口
subplot(4,1,t);plot(w,angX);holdon;gridon;%第二个窗口有4个图,4行1列排列,分别是M取四个不同值时的相位谱
xlabel('w');title('相位谱');ylabel('相位');%定义坐标轴的意义
figure(3);%第三个窗口
subplot(4,1,t);plot(w,v2);holdon;gridon;%第三个窗口有4个图,4行1列排列,分别是M取四个不同值时的增益谱
xlabel('w');title('增益谱');ylabel('增益/dB');%定义坐标轴的意义
end%结束for循环
图形见下图,幅度谱见图1-8,相位谱见图1-9,增益谱见图1-10:
图1-8M=8,64,256,1024时的幅度谱
结论:
随着M值的增加,主瓣面积逐渐减小,第一旁瓣面积逐渐增大。
图1-8M=8,64,256,1024时的相位谱
结论:
随着M的增大,相位谱越来越密集,但大致走向一致。
图1-10M=8,64,256,1024时的增益谱
结论:
随着M的增大,主瓣面积减小,第一旁瓣面积增大,图形变密集。
三、用计算机计算分析序列
和
的频谱。
1、理论计算以上两个信号的频谱和周期,用计算机画出其幅度谱的图形,标注坐标轴的含义和单位。
理论计算得:
幅度谱:
|X)|=+]
程序:
clc;%清屏
clear;%清内存
a=1024;%定义a的值为1024
m=2*pi/a;%角频率间隔
w=[-pi:
m:
pi];%定义w的取值序列
x1=zeros(1,a+1);%取值区间全部赋值为0
x2=zeros(1,a+1);
x1((pi-pi/4)/m)=pi;x1((pi+pi/4)/m)=pi;%生成函数
x2((pi-pi/4)/m)=pi;x2((pi+pi/4)/m)=pi;%生成函数
x2((pi-pi/8)/m)=pi;x2((pi+pi/8)/m)=pi;%生成函数
subplot(2,1,1);stem(w,x1,'.');holdon;gridon;%作2行1列的图,第一个为x1(n)的幅度谱
xlabel('w');title('x1(n)幅度谱');ylabel('x1(w)幅度');%标注坐标轴的意义和题目
subplot(2,1,2);stem(w,x2,'.');holdon;gridon;%作2行1列的图,第二个图为x2(n)的幅度谱
xlabel('w');title('x2(n)幅度谱');ylabel('x2(w)幅度');%标注坐标轴的意义和题目
图形见图1-11:
图1-11x1(n),x2(n)理论化的幅度谱
2、利用实验内容一编写的子函数计算以上两个信号的频谱,时间取值范围分别为
和
,其中M=128。
分别取N=8,16,128,256。
画图幅度谱和相位谱,仔细观察,与两信号的理想频谱相比较,得到M和N的取值与信号的理想频谱的有关结论。
对正弦信号频谱分析时,如何选取信号长度和离散频率的点数,数值计算时才能得到信号理想频谱。
(由于原序列的频谱为离散谱,画图时可以考虑用stem画。
)
程序:
M=128;%赋值M=128
N=[8,16,128,256];%定义N的取值序列
w=-pi:
(2*pi/M):
pi;%定义w的取值和角频率间隔
fort=1:
4%对t从1到4进行循环
n=-N(t)/2:
(N(t)/2-1);%根据题目定义n的取值范围
x=cos(n*pi/4);%x1(n)的函数表达式
[X,w]=dtft2(x,n,M);%调用子程序
magX1=abs(X);%取X的模值
angX1=angle(X);%取X的相位值
y1=20*log10(X);%增益
figure
(1);%窗口1
subplot(4,1,t);stem(w,magX1,'.');holdon;gridon;%窗口1有4行1列的4幅图,第t个图对应于N取序列中第t个值时的幅度谱
xlabel('w');title('不同N值下x