离散信号变换的matlab实现
- 格式:doc
- 大小:103.50 KB
- 文档页数:4
实验二 典型离散信号及其MATLAB 实现一、实验目的1. 掌握MATLAB 语言的基本操作,学习基本的编程功能。
2. 熟悉连续信号经过采样前后的频谱变化,加深对采样定理的理解。
3. 掌握MATLAB 产生常用离散时间信号的编程方法。
二、实验原理1. 单位抽样序列:⎩⎨⎧=01)(n δ 00≠=n n在MATLAB 中可以利用zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ 0≠=n k n2.单位阶跃序列:⎩⎨⎧01)(n u 00<≥n n在MATLAB 中可以利用ones()函数实现。
);,1(N ones x =3.正弦序列:)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中:)/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复正弦序列:n j e n x ϖ=)(在MATLAB 中:)**ex p(1:0n w j x N n =-=5.指数序列:n a n x =)(在MATLAB 中:na x N n .^1:0=-= 6.y=fliplr(x)——信号的翻转;x=square(t)——产生方波信号y=sawtooth(t)——产生锯齿波信号;y=sinc(x)——产生sinc 函数信号。
三、实验内容(一) 离散信号的产生离散信号的图形显示使用stem 指令。
1. 编写MATLAB 程序,产生下列典型脉冲序列。
(1) 单位脉冲序列:起点n0,终点nf ,在ns 处有一单位脉冲。
(2) 单位阶跃序列:起点n0,终点nf ,在ns 前为0,在ns 处及以后均为1(n0<=ns<=nf)。
(3) 实指数序列:n x )75.0(3=(4) 复指数序列:n j e x )7.02.0(4+-=其MATLAB 程序如下:n0=0;nf=10;ns=3;n1=n0:nf;x1=[(n1-ns)==0]; %单位脉冲序列n2=n0:nf;x2=[(n2-ns)>=0]; %单位阶跃序列n3=n0:nf;x3=(0.75).^n3; %实指数序列n4=n0:nf;x4=exp((-0.2+0.7j)*n4); %复指数冲序列subplot(2,2,1),stem(n1,x1);subplot(2,2,2),stem(n2,x2);subplot(2,2,3),stem(n3,x3);figuresubplot(2,2,1),stem(n4,real(x4)); %注意subplot 的变化 subplot(2,2,2),stem(n4,imag(x4));subplot(2,2,3),stem(n4,abs(x4));subplot(2,2,4),stem(n4,angle(x4));(二)离散时间信号的卷积在MATLAB中,利用函数conv(x,h)可以实现两个有限长度序列的卷积,要注意conv 函数是假定两个序列都从n=0开始的。
在MATLAB中进行IQ采样的离散小波变换,可以按照以下步骤进行:
1. 导入IQ采样信号:首先,需要将IQ采样信号导入MATLAB中。
可以使用MATLAB的导入数据功能,将IQ采样信号转换为MATLAB中的矩阵或向量。
2. 定义小波基函数:离散小波变换需要使用小波基函数。
在MATLAB中,可以使用内置的小波基函数,如'haar'、'db'、'sym'等。
也可以自定义小波基函数。
3. 执行离散小波变换:使用MATLAB中的dwt函数对IQ采样信号进行离散小波变换。
该函数的输入参数包括待变换的信号以及小波函数的名称和尺度。
输出结果包括低频部分和高频部分的系数。
4. 分析变换结果:对离散小波变换的结果进行分析,包括低频部分和高频部分的系数。
可以根据需要对低频部分和高频部分进行重构,以获得不同频率分辨率的子信号。
需要注意的是,离散小波变换是一种基于小波函数的变换方法,它将信号分解成低频和高频部分。
在小波变换中,低频部分表示信号的大致趋势,而高频部分则表示信号的细节信息。
离散小波变换可以通过滤波和下采样的方式实现。
matlab实现傅里叶变换与反变换、离散余弦变换与反变换首先,我们需要了解傅里叶变换和离散余弦变换的原理。
傅里叶变换是一种将时域信号转换为频域信号的方法,它可以将任意信号分解为一系列正弦和余弦信号的叠加。
离散余弦变换则是一种将离散信号转换为一组离散余弦信号的方法。
接下来,我们可以使用matlab中的fft函数来实现傅里叶变换和反变换。
具体步骤如下:
1. 定义一个信号向量x,可以使用matlab中的sin、cos、randn 等函数生成。
2. 使用fft函数对信号进行傅里叶变换,得到频域信号向量X。
3. 使用ifft函数对频域信号向量X进行反变换,得到原始信号向量x1。
4. 使用plot函数将原始信号向量x和反变换后的信号向量x1绘制在同一张图上,进行对比。
接下来,我们可以使用matlab中的dct函数来实现离散余弦变换和反变换。
具体步骤如下:
1. 定义一个长度为N的信号向量x,可以使用matlab中的sin、cos、randn等函数生成。
2. 使用dct函数对信号进行离散余弦变换,得到频域信号向量X。
3. 使用idct函数对频域信号向量X进行反变换,得到原始信号向量x1。
4. 使用plot函数将原始信号向量x和反变换后的信号向量x1绘制在同一张图上,进行对比。
通过上述步骤,我们可以使用matlab轻松实现傅里叶变换和离散余弦变换。
这些技术在信号处理、图像处理、音频处理等领域中得到广泛应用,掌握这些技术将有助于我们更好地理解和应用相关领域的算法。
1.单位抽样响应:n=-5:5;x=[zeros(1,5),1,zeros(1,5)];subplot(2,1,1);stem(n,x);title('单位抽样序列');xlabel('n');ylabel('δ(n)');延迟2个单位:n=-5:5;x=[zeros(1,3),1,zeros(1,7)];subplot(2,1,1);stem(n,x);title('单位抽样序列');xlabel('n');ylabel('δ(n)');2.单位阶跃序列:n=-5:5;x=[zeros(1,5),1,ones(1,5)];subplot(2,1,1);stem(n,x);title('单位阶跃序列');xlabel('n');ylabel('u(n)');左移2个单位:n=-5:5;x=[zeros(1,3),1,ones(1,7)];subplot(2,1,1);stem(n,x);title('单位阶跃序列');xlabel('n');ylabel('u(n)');3.正弦序列:A=3;fai=pi/2;Fs=2;f=3;n=0:0.001:4;x=A*sin(2*pi*n/Fs+fai); subplot(2,1,1);plot(n,x);title('sin(n)');xlabel('n');ylabel('x(n)');4.复数序列:(取实部显示)n=0:0.0001:20;w=3;x=exp(j*w*n);subplot(2,1,1);plot(n,real(x));title('复数序列(实部显示)'); xlabel('时间');ylabel(振幅);(取虚部显示)n=0:0.0001:20;w=3;x=exp(j*w*n);subplot(2,1,1);plot(n,imag(x));title('复数序列(虚部显示)'); xlabel('时间');ylabel('振幅');复数序列(取模)n=0:0.0001:20;w=3;x=exp(j*w*n+n/10);subplot(2,1,1);r=real(x).^2;k=imag(x).^2;m=(r+k).^0.5;plot(n,m);title('复数序列(模)');xlabel('时间');ylabel('振幅');5.指数序列:n=0:0.2:10;a=2;x=a.^n;subplot(2,1,1);plot(n,x);xlabel('n');ylabel('x(n)');title('指数序列')注释:1.“plot”是绘制曲线图,“stem”是绘制火柴梗图。
实验一离散信号的MATLAB实现一、目的要求1)学习典型的离散时间信号的MATLAB实现方法;2)学习离散时间序列的基本运算:相加、相乘、移位等;3)学习噪声的产生;4)掌握两个序列的卷积和相关运算5)掌握离散系统单位脉冲响应的求解。
二、实验内容1)典型的离散信号的表示方法:用matlab产生单位抽样信号δ(n) 、单位阶跃序列u(n) 、矩形序列R N(n) 、实指数序列a n u(n)、正弦序列sin(ωn)。
编写程序、并画出图形。
n=-20:20;n0=0;n1=10;w0=pi/4;x=[(n-n0)==0];x1=[(n-n0)>=0];x2=[(n-n0)>=0& (n-n1)<=0];x3=0.9.^n.*x1;x4=sin(w0*n);subplot(511);stem(n,x);axis([ -20 20 0 2]);ylabel('\sigma(n)'); subplot(512);stem(n,x1);axis([ -20 20 0 2]);ylabel('u(n)');subplot(513);stem(n,x2);axis([ -20 20 0 2]);ylabel('B N(n)');subplot(514);stem(n,x3);axis([ -20 20 0 2]);ylabel('a n u(n)');subplot(515);stem(n,x4);axis([ -20 20 -2 2]);ylabel('sin(w0n)');xlabel('n');2)离散信号的基本运算:对序列x(n)={2,3,4,1,2,5} ,n=0,1,2,3,4,5,的移位、乘法、加法、翻转及尺度变换。
编写程序、并画出图形。
n=-10:10;k=2;N=length(n);x=zeros(size(n));x1=zeros(size(n));y=zeros(size(n));y1=zeros(size(n));y2=zeros(size(n));y3=zeros(size(n));y4=zeros(size(n));x(11:16)=[2 3 4 1 2 5];x1(11:16)=[1 2 3 4 5 6];y(1+k:N)=x(1:N-k);y1(1:N-k)=x(1+k:N);y2=x.*x1;y3=x+x1;y4=fliplr(x);y5=x(1:2:N);n1=fix(n(1:2:N)/2);subplot(421);stem(n,x);xlabel('n');ylabel('x(n)');subplot(422);stem(n,x1);xlabel('n');ylabel('x1(n)');subplot(423);stem(n,y);xlabel('n');ylabel('x(n-2)');subplot(424);stem(n,y1);xlabel('n');ylabel('x(n+2)');subplot(425);stem(n,y2);xlabel('n');ylabel('x(n)*x1(n)');subplot(426);stem(n,y3);xlabel('n');ylabel('x(n)+x1(n)');subplot(427);stem(n,y4);xlabel('n');ylabel('x(-n)');subplot(428);stem(n1,y5);xlabel('n');ylabel('x(2n)');3)噪声的产生:产生方差为1,2,0.5的白噪声。
Matlab是一种高级技术计算语言和交互式环境,广泛用于工程、科学和数学领域。
在Matlab中,离散转换是指将连续的时间信号或连续的空间信号转化为离散的时间或离散的空间信号。
离散转换有许多种形式,包括傅立叶变换、离散傅立叶变换、z变换等,在Matlab中,我们可以使用相应的函数来进行离散转换,并将其表示为数学公式。
1. 傅立叶变换傅立叶变换是将一个时间函数或空间函数转换为频率函数的过程。
在Matlab中,我们可以使用fft函数来进行离散傅立叶变换。
假设我们有一个离散时间信号x,我们可以使用以下公式来表示其离散傅立叶变换:X(k) = Σ(x(n) * e^(-j*2πnk/N))其中,X(k)表示频率域上的离散信号,x(n)表示时域上的离散信号,N 表示信号的长度,k表示频率的索引,j表示虚数单位。
2. 离散傅立叶变换离散傅立叶变换是离散时间信号的傅立叶变换,其变换公式与连续信号的傅立叶变换类似,但在离散域内进行。
在Matlab中,我们同样可以使用fft函数来进行离散傅立叶变换。
假设我们有一个离散时间信号x,我们可以使用以下公式来表示其离散傅立叶变换:X(k) = Σ(x(n) * W^(-kn))其中,X(k)表示频率域上的离散信号,x(n)表示时域上的离散信号,N 表示信号的长度,k表示频率的索引,W表示旋转因子。
3. z变换z变换是离散时间信号的复平面变换,其用途广泛,包括系统分析、数字滤波器设计等。
在Matlab中,我们可以使用ztrans函数来进行z 变换。
假设我们有一个离散时间信号x,我们可以使用以下公式来表示其z变换:X(z) = Σ(x(n) * z^(-n))其中,X(z)表示复平面域上的离散信号,x(n)表示时域上的离散信号,n表示离散时间的索引,z表示复变量。
Matlab提供了丰富的离散转换函数和工具,能够帮助工程师和科学家对离散信号进行快速而准确的分析和处理。
通过将离散信号转化为数学公式,我们能够更好地理解信号的特性和行为,为后续的信号处理和系统设计提供有力支持。
数字信号处理课程实验报告实验名称离散信号及离散系统的MATLAB编程实现系别教师姓名实验地点实验日期一、实验内容1、用MATLAB仿真(编写)离散序列2、常见序列运算3、差分方程的求解4、系统零极点的求解。
(红色部分为必做项目)二、实验目的1. 复习离散时间的信号和系统,复习离散时间重要类型的信号和它们的运算的实现。
2. 熟悉MATLAB软件的集成开发环境,学会利用MATLAB编程及获得帮助的方法。
3. 学会利用MATLAB的绘图功能。
三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况)matlab软件,计算机四、实验试做记录(含程序、数据记录及分析)1、 Matlab表示序列MATLAB中,可采用向量表示序列,由于MATLAB中对序列下标默认为从1开始递增,因此要表示离散信号,一般应采用两个向量分别对信号的自变量和因变量进行描述。
如, n= -3~4,在MATLAB中表示为>> n = [-3, -2, -1, 0, 1, 2, 3, 4]; %自变量取值>> x = [ 2, 1, -1, 0, 1, 4, 3, 7]; %因变量取值说明:(1)向量可用方括号[ ]表示。
(2)当向量取值连续变化时可用冒号运算符“:”简化赋值过程,如的n值,可简化为n=[-3:4]或n= -3:4 。
(3)分号“;”表示不回显表达式的值。
(4)“%”表示其后内容为注释对象。
(5)符号“>>”是MATLAB命令窗口的输入提示符,此外,为便于多次调用,也可在m文件中输入相应的命令语句。
利用MATLAB,还可对信号的波形进行描述,常采用的绘图语句有stem,plot,subplot, axis,title,xlabel,ylabel,gtext, hold on, hold off, grid 等。
其中stem 绘制离散图形;plot 绘制连续图形;subplot 用于绘制子图,应在stem 或plot 语句前调用;axis 指定x 和y轴的取值范围,用在stem或plot语句后;title 标注图形名称,xlabel, ylabel 分别标注x轴和y轴名称;gtext可将标注内容放置在鼠标点击处;hold on和 hold off 用于控制对象绘制方式,是在原图上还是在新图上绘制;grid用于绘制网格。
1.9离散信号和系统分析的MATLAB实现1.9.1利用MATLAB产生离散信号用MATLAB表示一离散序列x[k]时,可用两个向量来表示。
其中一个向量表示自变量k的取值范围,另一个向量表示序列x[k]的值。
例如序列x[k]={2,1,1,-1,3,0,2}可用 MATLAB表示为K=-2:4;x=[2,1,1,-1,3,0,2]可用stem(k,f)画出序列波形。
当序列是从k=0开始时,可以只用一个向量x来表示序列。
由于计算机内寸的限制,MATLAB无法表示一个无穷长的序列。
例1-38利用MATLAB计算单位脉冲序4δ-k在-k≤]24[≤范围内各点的取值。
解:%progran 1_1 产生单位脉冲序列Ks=-4;ke=4;n=2;K=[ks:ke];X=[(k-n)==0];Stem(k,x):xlabel(‘k’);程序产生的序列波形如图1-49所示。
例1-39利用MATLAB画出信号X[k]=10sin(0.02kπ)+n[k], 1000≤≤k的波形。
其中n[k]表示为均值为0方差为1的Gauss分布随机信号。
解:MALAB提供了两个产生(伪)随机序列的函数。
Rand(1,N)产生1行N列的[0,1]均匀分布随机数。
Randn(1,N)产生1行N列均值为0方差为1的Gauss分布随机数。
%program 1_2 产生受噪声干扰的正弦信号N=100;k=0:N;X=10*sin(0.02*pi*k)+randn(1,N+1);Plot(k,x);Xlabel(‘k’);Ylabel(‘x[k]’);程序产生序列如图1-50所示。
1.9.2 离散卷积的计算离散卷积是数字信号处理中的一个基本运算,MTLAB提供的计算两个离散序列卷积的函数是conv,其调用方式为y=conv(x,h)其中调用参数x,h为卷积运算所需的两个序列,返回值y是卷积结果。
MATLAB函数conv的返回值y中只有卷积的结果,没有y的取值范围。
实验一 常见离散信号的MATLAB 产生和图形显示实验目的:加深对常用离散信号的理解; 实验原理:1.单位抽样序列⎩⎨⎧=01)(n δ≠=n n 在MATLAB 中可以利用zeros()函数实现。
;1)1();,1(==x N zeros x如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ≠=n kn2.单位阶跃序列⎩⎨⎧01)(n u00<≥n n 在MATLAB 中可以利用ones()函数实现。
);,1(N ones x =3.正弦序列)/2sin()(ϕπ+=Fs fn A n x在MATLAB 中)/***2sin(*1:0fai Fs n f pi A x N n +=-=4.复正弦序列n j e n x ϖ=)(在MATLAB 中)**ex p(1:0n w j x N n =-=5.指数序列n a n x =)(在MATLAB 中na x N n .^1:0=-=实验内容:编制程序产生上述5种信号(长度可输入确定),并绘出其图形。
实验要求:讨论复指数序列的性质。
实验过程: 1. 单位冲击序列:>> n=0:10;>> x1=[1 zeros(1,10)];>> x2=[zeros(1,8) 1 zeros(1,8)]; >> subplot(1,2,1); >> stem(n,x1);>> xlabel ('时间序列n'); >> ylabel('幅度');>> title('单位冲激序列δ(n )'); >> subplot(1,2,2); >> stem(x2);>> xlabel('时间序列n'); >> ylabel('幅度');>> title('延时了8个单位的冲激序列δ(n-8)'); >>>> n=0:10;>> u=[ones(1,11)];>> stem(n,u);>> xlabel ('时间序列n');>> ylabel('信号幅度');>> title('单位阶跃序列u(n)');>>3.正弦序列:>> n=1:30;>> x=2*sin(pi*n/6+pi/4);>> stem(n,x);>> xlabel ('时间序列n');>> ylabel('振幅');>> title('正弦函数序列x=2*sin(pi*n/6+pi/4)'); >>>> n=1:30;>> x=5*exp(j*3*n);>> stem(n,x);>> xlabel ('时间序列n');>> ylabel('振幅');>> title('复指数序列x=5*exp(j*3*n)');>>5.指数序列:>> n=1:30;>> x=1.8.^n;>> stem(n,x);>> xlabel ('时间序列n');>> ylabel('振幅');>> title('指数序列x=1.8.^n');>>复指数序列的周期性讨论:为了研究复指数序列的周期性质,我们分别作了正弦函数x1=1.5sin(0.3πn)和x2=sin(0.6n); 的幅度特性图像。
用matlab实现一维离散余弦变换一维离散余弦变换(Discrete Cosine Transform, DCT)是数字信号处理中一种重要的数学工具,在图像和音频处理中被广泛应用。
离散余弦变换可以将一个序列从时域转换到频域,提取序列的频域特征。
本文将介绍如何使用MATLAB来实现一维离散余弦变换,并展示一些实例应用。
1. 离散余弦变换的定义离散余弦变换是将一个N点的实数序列x(n)转换为另一个N点的实数序列X(k),其中k=0,1,...,N-1。
离散余弦变换可以表示为以下公式:X(k) = sqrt(2/N) * alpha(k) * sum(x(n) * cos((pi/N) * (n+0.5) * k)),n=0,1,...,N-1其中,alpha(k) = 1, k=0,alpha(k) = sqrt(2)/2, k>0。
这个公式描述了如何将序列x(n)的各个点的值通过余弦函数计算得到另一个序列X(k)。
2. MATLAB实现离散余弦变换在MATLAB中,可以使用dct函数来实现一维离散余弦变换。
下面是一个简单的例子:```matlabx = [1 2 3 4 5 6 7 8];X = dct(x);```在这个例子中,序列x包含了8个点的数值。
通过调用dct函数,我们可以得到离散余弦变换后的序列X。
可以通过打印X的值来查看变换后的结果。
3. MATLAB离散余弦变换的实例应用离散余弦变换在图像和音频处理中有广泛的应用。
这里介绍两个典型的应用案例。
3.1 图像压缩图像压缩是离散余弦变换的重要应用之一。
通过将图像从时域转换到频域,可以利用离散余弦变换的能力将大部分能量集中在少数高频分量上,从而实现对图像信息的压缩。
```matlabimg = imread('image.jpg'); % 读取图像img = double(img); % 转换为double类型dct_img = dct2(img); % 对图像进行二维离散余弦变换```在这个例子中,我们首先使用imread函数读取一张图像,然后将图像转换为double类型,以便进行计算。
实验四 离散信号的频域分析
一、 实验目的
1.
掌握序列的傅里叶变换、离散傅里叶级数、离散傅里叶变换、快速傅里叶变换的Matlab 实现; 2.
学习用FFT 对连续信号和离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。
二、 实验内容及步骤
1. 计算序列的DTFT 和DFT ,观察栅栏效应
设)()(4n R n x =,要求用MATLAB 实现:
(1)计算)(n x 的傅里叶变换)(ωj e X ,并绘出其幅度谱;
(2)分别计算)(n x 的4点DFT 和8点DFT ,绘出其幅度谱。
并说明它们和)(ωj e X 的关系。
(提示:DFT 变换可用MA TLAB 提供的函数fft 实现,也可以自己用C 语言或matlab 编写)
2.计算序列的FFT ,观察频谱泄漏
已知周期为16的信号)1612cos()1610cos()(n n n x π
π
+=。
(1) 截取一个周期长度M=16点,计算其16点FFT ,并绘出其幅度谱;
(2) 截取序列长度M=10点,计算其16点FFT ,绘出其幅度谱,并与(1)的结果进行比
较,观察频谱泄漏现象,说明产生频谱泄漏的原因。
三、 实验报告要求
1.
结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT 作谱分析时有关参数的选择方法。
2. 总结实验所得主要结论。
1. 计算序列的DTFT 和DFT ,观察栅栏效应
设)()(4n R n x =,要求用MATLAB 实现:
(1)计算)(n x 的傅里叶变换)(ωj e X ,并绘出其幅度谱;
(2)分别计算)(n x 的4点DFT 和8点DFT ,绘出其幅度谱。
并说明它们和)(ωj e
X 的关系。
(1)代码:
n=0:3; M=10;
k=0:2*M-1; %观察两个周期
x=u(n)-u(n-4);
X=x*(exp(-j*2*pi/M)).^(n'*k);%序列的傅里叶变换
f1=abs(X);
subplot(211);
stem(n,x,'fill');
title('R4(n)序列');
xlabel('n');
grid on;
subplot(212);plot(f1);
title('r4(n)的幅度谱');
xlabel('abs(R4(n))');
grid on
(2)代码
n=0:3;
M=4;
H=8;
m=100;
k=0:2*M-1; %观察两个周期
k1=0:2*H-1; %观察两个周期
k2=0:2*m-1; %观察两个周期
x=u(n)-u(n-4);
X=x*(exp(-j*2*pi/M)).^(n'*k);%序列的傅里叶变换
Y=x*(exp(-j*2*pi/H)).^(n'*k1);%序列的傅里叶变换
q=x*(exp(-j*2*pi/m)).^(n'*k2);%序列的傅里叶变换
f1=abs(X);
subplot(311);
stem(k,f1, 'fill');
title('4点DFT幅度谱');
xlabel('abs(R4(n))');
grid on ;
f2=abs(Y);
subplot(312);
stem(k1,f2, 'fill');
title('8点DFT幅度谱');
xlabel('abs(R4(n))');
grid on
subplot(313);
f3=abs(q);
plot(f3);
title('R4(n)DFT幅度谱');
grid on;
根据图像可以看出,4点和8点的DFT是原序列的傅里叶变换在周期上进行
等分取值。
例如4点(8点)就是将其分为4(8)等分。
2.计算序列的FFT ,观察频谱泄漏
已知周期为16的信号)1612cos()1610cos()(n n n x π
π
+=。
(3) 截取一个周期长度M=16点,计算其16点FFT ,并绘出其幅度谱;
(4) 截取序列长度M=10点,计算其16点FFT ,绘出其幅度谱,并与(1)的结果进行比
较,观察频谱泄漏现象,说明产生频谱泄漏的原因。
(3)
代码:
n=0:15;
x=cos(10*pi/16*n)+cos(12*pi/16*n);
subplot(211);
stem(n,x, 'fill');
title('x 序列图像');
xlabel('n');
grid on;
f2=fft(x);
subplot(212);
stem(n,f2, 'fill');
title('16点FFT 的幅度谱');
xlabel('abs(X(k))');
grid on;
(4)代码:
clc ;clear;clf
n=0:15;
m=0:9;
x=cos(10*pi/16*n)+cos(12*pi/16*n);
subplot(211);
stem(n,x, 'fill');
title('x 序列图像');
xlabel('n');
grid on;
x=[cos(10*pi/16*m)+cos(12*pi/16*m),0 0 0 0 0 0];
f2=fft(x,16);
subplot(212);
stem(n,f2, 'fill');
title('10点FFT 的幅度谱');
xlabel('abs(X(k))');
grid on
频谱分析:
10点的fft与原来的频谱相比明显发生了频谱泄露,10点fft相当于原信号进行加窗,在频域里相当于卷积,其结果使得到的频谱与原来不相同,产生失真,这种失真在频谱上表现为'“扩散'”,即为频谱泄露。
实验小结:通过实验对于离散信号的分析有了一定的掌握,在实验的过程中我们把课堂上的理论知识应用到实践中,这让我们对信号的处理有了更进一步的理解,只有通过实验我们才能在学习中不断提高自己,才能熟练的学好专业知识。