Matlab频谱分析报告程序
matlab 信号 频谱分析实验报告

matlab 信号频谱分析实验报告实验背景:信号频谱分析是一种通过将信号在频域上进行分解和分析的方法,用于研究信号的频率成分和频率特性。
Matlab是一种常用的科学计算软件,拥有强大的信号处理和频谱分析功能。
本实验旨在通过使用Matlab对信号进行频谱分析,探索信号的频率特性。
实验目的:1. 了解信号频谱分析的基本概念和方法;2. 掌握Matlab中信号频谱分析的基本操作;3. 分析不同类型信号的频谱特性。
实验步骤:1. 生成信号:首先,我们需要生成一个待分析的信号。
可以选择不同类型的信号,如正弦信号、方波信号或噪声信号。
在Matlab中,可以使用相关函数生成这些信号。
2. 绘制时域图:使用Matlab绘制生成的信号的时域图。
时域图展示了信号在时间上的变化情况,可以帮助我们对信号有一个直观的了解。
3. 进行频谱分析:使用Matlab中的傅里叶变换函数对信号进行频谱分析。
傅里叶变换可以将信号从时域转换到频域,得到信号的频谱图。
频谱图展示了信号在不同频率上的能量分布情况。
4. 绘制频谱图:使用Matlab绘制信号的频谱图。
频谱图可以帮助我们观察信号的频率成分和频率特性。
可以选择使用不同的频谱分析方法,如快速傅里叶变换(FFT)或功率谱密度估计(PSD)。
5. 分析频谱特性:观察频谱图,分析信号的频率成分和频率特性。
可以计算信号的主要频率分量,如峰值频率或频率范围。
还可以计算信号的能量分布情况,了解信号在不同频率上的能量分布情况。
实验结果与讨论:通过对不同类型信号进行频谱分析实验,我们可以得到以下结果和讨论:1. 正弦信号的频谱特性:正弦信号在频谱上只有一个频率成分,即信号的频率。
通过频谱分析,我们可以准确地确定正弦信号的频率。
2. 方波信号的频谱特性:方波信号在频谱上存在多个频率成分,主要包括基波频率和谐波频率。
通过频谱分析,我们可以观察到方波信号频谱上的多个峰值。
3. 噪声信号的频谱特性:噪声信号在频谱上呈现较为均匀的能量分布,没有明显的峰值。
实验三用FFT对信号进行频谱分析和MATLAB程序

实验三用FFT对信号进行频谱分析和MATLAB程序实验三中使用FFT对信号进行频谱分析的目的是通过将时域信号转换为频域信号,来获取信号的频谱信息。
MATLAB提供了方便易用的函数来实现FFT。
首先,我们需要了解FFT的原理。
FFT(快速傅里叶变换)是一种快速计算离散傅里叶变换(DFT)的算法,用于将离散的时间域信号转换为连续的频域信号。
FFT算法的主要思想是将问题划分为多个规模较小的子问题,并利用DFT的对称性质进行递归计算。
FFT算法能够帮助我们高效地进行频谱分析。
下面是一个使用MATLAB进行频谱分析的示例程序:```matlab%生成一个10秒钟的正弦波信号,频率为1Hz,采样率为100Hzfs = 100; % 采样率t = 0:1/fs:10-1/fs; % 时间范围f=1;%正弦波频率x = sin(2*pi*f*t);%进行FFT计算N = length(x); % 信号长度X = fft(x); % FFT计算magX = abs(X)/N; % 幅值谱frequencies = (0:N-1)*(fs/N); % 频率范围%绘制频谱图figure;plot(frequencies, magX);xlabel('频率(Hz)');ylabel('振幅');title('信号频谱');```上述代码生成了一个10秒钟的正弦波信号,频率为1 Hz,采样率为100 Hz。
通过调用MATLAB的fft函数计算信号的FFT,然后计算每个频率分量的幅值谱,并绘制出信号频谱图。
在频谱图中,横轴表示频率,纵轴表示振幅。
该实验需要注意以下几点:1.信号的采样率要与信号中最高频率成一定比例,以避免采样率不足导致的伪频谱。
2.FFT计算结果是一个复数数组,我们一般只关注其幅值谱。
3.频率范围是0到采样率之间的频率。
实验三的报告可以包含以下内容:1.实验目的和背景介绍。
matlab离散信号的频谱分析实验报告

matlab离散信号的频谱分析实验报告Matlab离散信号的频谱分析实验报告引言:信号频谱分析是信号处理领域中的重要内容,它可以帮助我们了解信号的频率特性和频谱分布。
在实际应用中,离散信号的频谱分析尤为重要,因为大部分现实世界中的信号都是以离散形式存在的。
本实验旨在使用Matlab对离散信号进行频谱分析,并探索不同信号的频谱特性。
一、实验准备在进行实验之前,我们需要准备一些基本的工具和知识。
首先,我们需要安装Matlab软件,并熟悉其基本操作。
其次,我们需要了解离散信号的基本概念和性质,例如采样率、离散傅里叶变换等。
最后,我们需要准备一些实验数据,可以是自己生成的信号,也可以是从外部设备中获取的信号。
二、实验步骤1.生成离散信号首先,我们可以使用Matlab的随机函数生成一个离散信号。
例如,我们可以使用randn函数生成一个均值为0、方差为1的高斯白噪声信号。
代码如下:```matlabN = 1000; % 信号长度x = randn(N, 1); % 生成高斯白噪声信号```2.计算信号的频谱接下来,我们可以使用Matlab的fft函数对信号进行离散傅里叶变换,从而得到信号的频谱。
代码如下:```matlabX = fft(x); % 对信号进行离散傅里叶变换```3.绘制频谱图最后,我们可以使用Matlab的plot函数将信号的频谱绘制出来,以便更直观地观察信号的频谱特性。
代码如下:```matlabf = (0:N-1)*(1/N); % 构建频率轴plot(f, abs(X)); % 绘制频谱图xlabel('Frequency'); % 设置横轴标签ylabel('Magnitude'); % 设置纵轴标签title('Spectrum Analysis'); % 设置图标题```三、实验结果通过以上步骤,我们可以得到离散信号的频谱图。
用FFT对信号作频谱分析Matlab程序

对以下序列进行FFT 分析x 1(n)=R 4(n)x 2(n)=x 3(n)=x1n=[ones(1,4)]; %产生R4(n)序列向量X1k8=fft(x1n,8); %计算x1n 的8点DFTX1k16=fft(x1n,16); %计算x1n 的16点DFT%以下绘制幅频特性曲线N=8;f=2/N*(0:N-1); (不懂)figure(1);subplot(1,2,1);stem(f,abs(X1k8),'r','、'); %绘制8点DFT 的幅频特性图,abs 求得Fourier 变换后的振幅title('(1a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');N=16;f=2/N*(0:N-1);subplot(1,2,2);stem(f,abs(X1k16),'、'); %绘制8点DFT 的幅频特性图title('(1b) 16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');%x2n 与 x3nM=8;xa=1:(M/2); xb=(M/2):-1:1; %从M/2到1每次递减1x2n=[xa,xb]; %产生长度为8的三角波序列x2(n)x3n=[xb,xa];X2k8=fft(x2n,8);X2k16=fft(x2n,16);X3k8=fft(x3n,8);X3k16=fft(x3n,16);figure(2);N=8;f=2/N*(0:N-1);subplot(2,2,1);stem(f,abs(X2k8),'r','、'); %绘制8点DFT 的幅频特性图n+1 0≤n ≤3 8-n 4≤n ≤7 0 其它n 4-n 0≤n ≤3 n-3 4≤n ≤70 其它ntitle('(2a) 8点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,3);stem(f,abs(X3k8),'r','、'); %绘制8点DFT的幅频特性图title('(3a) 8点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度');N=16;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X2k16),'、'); %绘制8点DFT的幅频特性图title('(2b) 16点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X3k16),'、'); %绘制8点DFT的幅频特性图title('(3b) 16点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度');%x4n 与 x5nN=8;n=0:N-1;x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k8=fft(x4n,8);X4k16=fft(x4n,16);X5k8=fft(x5n,8);X5k16=fft(x5n,16);figure(3);N=8;f=2/N*(0:N-1);subplot(2,2,1);stem(f,abs(X4k8),'r','、'); %绘制8点DFT的幅频特性图title('(4a) 8点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,3);stem(f,abs(X5k8),'r','、'); %绘制8点DFT的幅频特性图title('(5a) 8点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');N=16;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X4k16),'、'); %绘制8点DFT的幅频特性图title('(4b) 16点DFT[x_4(n)]');xlabel('ω/π');ylabel('幅度'); subplot(2,2,4);stem(f,abs(X5k16),'、'); %绘制8点DFT的幅频特性图title('(5b) 16点DFT[x_5(n)]');xlabel('ω/π');ylabel('幅度');%x8nFs=64; T=1/Fs;N=16;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k16=fft(x8n,16);N=16;f=2/N*(0:N-1);figure(4);subplot(2,2,1);stem(f,abs(X8k16),'、'); %绘制8点DFT的幅频特性图title('(6a) 16点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度');N=32;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k32=fft(x8n,32);N=32;f=2/N*(0:N-1);subplot(2,2,2);stem(f,abs(X8k32),'、'); %绘制8点DFT的幅频特性图title('(6b) 32点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度'); N=64;n=0:N-1; %对于N=16的情况nT = n*T;x8n=cos(8*pi*nT)+cos(16*pi*nT)+cos(20*pi*nT)X8k64=fft(x8n,64);N=64;f=2/N*(0:N-1);subplot(2,2,3);stem(f,abs(X8k64),'、'); %绘制8点DFT的幅频特性图title('(6c) 64点DFT[x_8(n)]');xlabel('ω/π');ylabel('幅度');。
matlab 信号 频谱分析实验报告

matlab 信号频谱分析实验报告《Matlab 信号频谱分析实验报告》实验目的:通过Matlab软件对信号进行频谱分析,了解信号的频谱特性,并掌握频谱分析的基本方法。
实验原理:信号的频谱分析是指将信号在频域上进行分析,得到信号的频谱特性。
频谱分析可以帮助我们了解信号的频率成分,频率分布情况,以及信号的频谱密度等信息。
在Matlab中,可以使用fft函数对信号进行频谱分析,得到信号的频谱图像。
实验步骤:1. 生成信号:首先在Matlab中生成一个信号,可以是正弦信号、方波信号或者任意复杂的信号。
2. 采样信号:对生成的信号进行采样,得到离散的信号序列。
3. 频谱分析:使用fft函数对采样的信号进行频谱分析,得到信号的频谱特性。
4. 绘制频谱图像:将频谱分析得到的结果绘制成频谱图像,观察信号的频谱分布情况。
实验结果分析:通过频谱分析,我们可以得到信号的频谱图像,从图像中可以清晰地看出信号的频率成分,频率分布情况,以及信号的频谱密度等信息。
通过对信号频谱图像的观察和分析,可以更好地了解信号的频谱特性,为后续的信号处理和分析提供参考。
实验结论:通过本次实验,我们成功使用Matlab对信号进行了频谱分析,得到了信号的频谱特性,并且掌握了频谱分析的基本方法。
频谱分析是信号处理和分析的重要工具,对于理解信号的频率特性和频率分布情况具有重要意义。
希望通过本次实验,能够对信号的频谱分析有更深入的了解,并且能够在实际工程中应用到相关领域。
通过本次实验,我们对Matlab信号频谱分析有了更深入的了解,对信号处理和分析有了更深入的认识,也为我们今后的学习和工作提供了更多的帮助。
希望通过不断地实践和学习,能够更加深入地掌握信号频谱分析的相关知识,为实际工程应用提供更多的帮助。
MATLAB离散信号的产生和频谱分析实验报告

MATLAB离散信号的产⽣和频谱分析实验报告实验⼀离散信号的产⽣和频谱分析⼀、实验⽬的仿真掌握采样定理。
学会⽤FFT 进⾏数字谱分析。
掌握FFT 进⾏数字谱分析的计算机编程实现⽅法。
培养学⽣综合分析、解决问题的能⼒,加深对课堂内容的理解。
⼆、实验要求掌握采样定理和数字谱分析⽅法;编制FFT 程序;完成正弦信号、线性调频信号等模拟⽔声信号的数字谱分析;三、实验内容单频脉冲(CWP )为)2e xp()()(0t f j T t rec t t s π=。
式中,)(Ttrect 是矩形包络,T 是脉冲持续时间,0f 是中⼼频率。
矩形包络线性调频脉冲信号(LFM )为)]21(2exp[)()(20Mt t f j Ttrect t s +=π。
式中,M 是线性调频指数。
瞬时频率Mt f +0是时间的线性函数,频率调制宽度为MT B =。
设参数为kHz f 200=,ms T 50=,kHz B 10=,采样频率kHz f s 100=。
1.编程产⽣单频脉冲、矩形包络线性调频脉冲。
2.编程实现这些信号的谱分析。
3.编程实现快速傅⽴叶变换的逆变换。
四、实验原理1、采样定理所谓抽样,就是对连续信号隔⼀段时间T 抽取⼀个瞬时幅度值。
在进⾏模拟/数字信号的转换过程中,当采样频率fs ⼤于信号中最⾼频率f 的2倍时(fs>=2f),采样之后的数字信号完整地保留了原始信号中的信息,⼀般实际应⽤中保证采样频率为信号最⾼频率的5~10倍;采样定理⼜称奈奎斯特定理。
2、离散傅⾥叶变换(FFT )长度为N 的序列()x n 的离散傅⽴叶变换()X k 为:10()(),0,....,1N nkN n X k x n W k N -===-∑N 点的DFT 可以分解为两个N/2点的DFT ,每个N/2点的DFT ⼜可以分解为两个N/4点的DFT 。
依此类推,当N 为2的整数次幂时(2MN =),由于每分解⼀次降低⼀阶幂次,所以通过M 次的分解,最后全部成为⼀系列2点DFT 运算。
实验2 用MATLAB进行信号频谱分析 2

实验报告通信工程 1101学号:********* 姓名:李*实验2 用MATLAB 进行信号频谱分析一、实验目的㈠ 初步掌握MATLAB 产生常用离散时间信号的编程方法。
㈡ 学习编写简单的FFT 算法程序,对离散信号进行幅频谱分析。
㈢ 观察离散时间信号频谱的特点。
二、实验原理㈠ 常用的离散时间信号在 MATLAB 语言主要是研究离散信号的。
常用的离散信号有: 1.单位取样序列⎩⎨⎧≠==0001)(n n n δ2.单位阶跃序列⎩⎨⎧<≥=001)(n n n u3.实指数序列R a n a n x n∈∀=;)(4.复指数序列n e n x n j ∀=+)(0)(ωσ5.正(余)弦序列)cos()(0θω+=n n x n ∀ 6.周期序列n N n x n x ∀+=)()(㈡ 离散信号的产生离散信号的图形显示使用stem 指令。
在 MATLAB 中的信号处理工具箱中,主要提供的信号是离散信号。
由于MATLAB 对下标的约定为从1开始递增,例如x=[5,4,3,2,1,0],表示x(1)=5,x(2)=4,X(3)=3…因此要表示一个下标不由1开始的数组x(n),一般应采用两个矢量,如 n=[-3,-2,-1,0,l ,2,3,4,5];x=[1,-l ,3,2,0,4,5,2,1];这表示了一个含9个采样点的矢量:X(n)={x(-3),x(-2),x(-1),x(0),x(1),x(2),x(3),x(4),x(5)}。
1.单位取样序列⎩⎨⎧≠==δ0001)(n n n 这一函数实现的方法有二:方法一:可利用MATLAB 的zeros 函数。
x=zeros(1,N); %建立一个一行N 列的全零数组x(1)=1; %对X (1)赋1 方法二:可借助于关系操作符实现n=1:N;x=[n==1]; %n 等于1时逻辑关系式结果为真,x=1;n 不等于1时为假,x=0如要产生 ⎪⎩⎪⎨⎧≤<<=≤≤=-δ20210100)(10)(n n n n n n n n n n n n则可采用MATLAB 实现:n=n1:n2;x=[(n-n0)==0];%n=n0时逻辑关系式结果为真,x=1;n ≠n0时为假,x=0 2.单位阶跃序列⎩⎨⎧<≥=001)(n n n u这一函数可利用MATLAB 的ones 函数实现: x=ones(1,N);还可借助于关系操作符“>=”来实现。
matlab fft谱分析实验报告

matlab fft谱分析实验报告Matlab FFT谱分析实验报告引言谱分析是一种常用的信号处理技术,用于研究信号的频率成分和能量分布。
傅里叶变换是一种常见的谱分析方法,而Matlab中的FFT函数则是实现傅里叶变换的强大工具。
本实验旨在通过使用Matlab中的FFT函数对不同类型的信号进行谱分析,探索其在实际应用中的作用和价值。
实验方法1. 生成信号首先,我们使用Matlab中的函数生成几种不同类型的信号,包括正弦信号、方波信号和噪声信号。
通过调整信号的频率、幅度和噪声水平,我们可以模拟不同的实际场景。
2. 调用FFT函数接下来,我们使用Matlab中的FFT函数对生成的信号进行频谱分析。
FFT函数将信号从时域转换到频域,提供了信号在不同频率上的能量分布情况。
3. 绘制频谱图通过调用Matlab中的绘图函数,我们可以将FFT函数输出的频谱数据可视化为频谱图。
频谱图通常以频率为横轴,能量或幅度为纵轴,展示了信号在不同频率上的能量分布情况。
实验结果1. 正弦信号的频谱分析我们首先对一个频率为50Hz、幅度为1的正弦信号进行频谱分析。
结果显示,该信号在50Hz附近有一个明显的峰值,表示信号主要由50Hz频率成分组成。
2. 方波信号的频谱分析接下来,我们对一个频率为10Hz、幅度为1的方波信号进行频谱分析。
由于方波信号包含丰富的谐波成分,频谱图中出现了多个峰值,每个峰值对应一个谐波成分。
3. 噪声信号的频谱分析最后,我们对一个包含高斯噪声的信号进行频谱分析。
噪声信号的频谱图呈现出平坦的能量分布,没有明显的峰值。
这说明噪声信号在各个频率上都有一定的能量分布,没有明显的频率成分。
讨论与分析通过对不同类型信号的频谱分析,我们可以得出以下结论:1. 正弦信号的频谱图呈现出一个明显的峰值,表示信号主要由该频率成分组成。
这对于识别和分析周期性信号非常有用。
2. 方波信号的频谱图呈现出多个峰值,每个峰值对应一个谐波成分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 信号处理工具箱 谱估计专题频谱分析Spectral estimation (谱估计)的目标是基于一个有限的数据集合描述一个信号的功率(在频率上的)分布。
功率谱估计在很多场合下都是有用的,包括对宽带噪声湮没下的信号的检测。
从数学上看,一个平稳随机过程n x 的power spectrum (功率谱)和correlation sequence (相关序列)通过discrete-time Fourier transform (离散时间傅立叶变换)构成联系。
从normalized frequency (归一化角频率)角度看,有下式()()j mxx xxm S R m eωω∞-=-∞=∑注:()()2xx S X ωω=,其中()/2/21limN j n n N n N X x e Nωω→∞=-=∑πωπ-<≤。
其matlab近似为X=fft(x,N)/sqrt(N),在下文中()L X f 就是指matlab fft 函数的计算结果了使用关系2/s f f ωπ=可以写成物理频率f 的函数,其中s f 是采样频率()()2/sjfm f xx xxm S f R m eπ∞-=-∞=∑相关序列可以从功率谱用IDFT 变换求得:()()()/22//22sss f jfm f j m xx xx xx s f S e S f e R m d df f πωππωωπ--==⎰⎰序列n x 在整个Nyquist 间隔上的平均功率可以表示为()()()/2/202ss f xx xx xx s f S S f R d df f ππωωπ--==⎰⎰ 上式中的()()2xx xx S P ωωπ=以及()()xx xx sS f P f f = 被定义为平稳随机信号n x 的power spectral density (PSD)(功率谱密度) 一个信号在频带[]1212,,0ωωωωπ≤<≤上的平均功率可以通过对PSD 在频带上积分求出[]()()211212,xxxxP P d P d ωωωωωωωωωω--=+⎰⎰ 从上式中可以看出()xx P ω是一个信号在一个无穷小频带上的功率浓度,这也是为什么它叫做功率谱密度。
PSD 的单位是功率(e.g 瓦特)每单位频率。
在()xx P ω的情况下,这是瓦特/弧度/抽或只是瓦特/弧度。
在()xx P f 的情况下单位是瓦特/赫兹。
PSD 对频率的积分得到的单位是瓦特,正如平均功率[]12,P ωω所期望的那样。
对实信号,PSD 是关于直流信号对称的,所以0ωπ≤≤的()xx P ω就足够完整的描述PSD 了。
然而要获得整个Nyquist 间隔上的平均功率,有必要引入单边PSD 的概念:()()0020onesided xx P P πωωωωπ-≤<⎧=⎨≤<⎩信号在频带[]1212,,0ωωωωπ≤<≤上的平均功率可以用单边PSD 求出[]()2121,onesidedP P d ωωωωωω=⎰频谱估计方法Matlab 信号处理工具箱提供了三种方法PSD 直接从信号本身估计出来。
最简单的就是periodogram (周期图法),一种改进的周期图法是Welch's method 。
更现代的一种方法是multitaper method (多椎体法)。
Parametric methods (参量类方法)这类方法是假设信号是一个由白噪声驱动的线性系统的输出。
这类方法的例子是Yule-Walker autoregressive (AR) method 和Burg method 。
这些方法先估计假设的产生信号的线性系统的参数。
这些方法想要对可用数据相对较少的情况产生优于传统非参数方法的结果。
Subspace methods (子空间类)又称为high-resolution methods (高分辨率法)或者super-resolution methods (超分辨率方法)基于对自相关矩阵的特征分析或者特征值分解产生信号的频率分量。
代表方法有multiple signal classification (MUSIC) method 或eigenvector (EV) method 。
这类方法对线谱(正弦信号的谱)最合适,对检测噪声下的正弦信号很有效,特别是低信噪比的情况。
Nonparametric Methods 非参数法下面讨论periodogram, modified periodogram, Welch, 和 multitaper 法。
同时也讨论CPSD 函数,传输函数估计和相关函数。
Periodogram 周期图法一个估计功率谱的简单方法是直接求随机过程抽样的DFT ,然后取结果的幅度的平方。
这样的方法叫做周期图法。
一个长L 的信号[]L x n 的PSD 的周期图估计是()()2ˆL xxs X f P f f L=注:这里()L X f 运用的是matlab 里面的fft 的定义不带归一化系数,所以要除以L 其中()[]12/0s L jfn f L L n X f x n e π--==∑实际对()L X f 的计算可以只在有限的频率点上执行并且使用FFT 。
实践上大多数周期图法的应用都计算N 点PSD 估计()()2ˆL k xx ks X f P f f L=,,0,1,,1sk kf f k N N==-其中()[]12/0L jkn N L k L n X f x n e π--==∑选择N 是大于L 的下一个2的幂次是明智的,要计算[]L k X f 我们直接对[]L x n 补零到长度为N 。
假如L>N ,在计算[]L k X f 前,我们必须绕回[]L x n 模N 。
作为一个例子,考虑下面1001元素信号n x ,它包含了2个正弦信号和噪声 randn('state',0);fs = 1000; % Sampling frequencyt = (0:fs)/fs; % One second worth of samples A = [1 2]; % Sinusoid amplitudes (row vector)f = [150;140]; % Sinusoid frequencies (column vector) xn = A*sin(2*pi*f*t) + 0.1*randn(size(t));注意:最后三行表明了一个方便的表示正弦之和的方法,它等价于: xn = sin(2*pi*150*t) + 2*sin(2*pi*140*t) + 0.1*randn(size(t));对这个PSD 的周期图估计可以通过产生一个周期图对象(periodogram object )来计算 Hs = spectrum.periodogram('Hamming'); 估计的图形可以用psd 函数显示。
psd(Hs,xn,'Fs',fs,'NFFT',1024,'SpectrumType','twosided')00.10.20.30.40.50.60.70.80.9-80-70-60-50-40-30-20-100Frequency (kHz)P o w e r /f r e q u e n c y (d B /H z )Power Spectral Density Estimate via Periodogram平均功率通过用下述求和去近似积分 求得 [Pxx,F] = psd(Hs,xn,fs,'twosided'); Pow = (fs/length(Pxx)) * sum(Pxx) Pow = 2.5059你还可以用单边PSD 去计算平均功率 [Pxxo,F] = psd(Hs,xn,fs,'onesided'); Pow = (fs/(2*length(Pxxo))) * sum(Pxxo) Pow = 2.5011 周期图性能下面从四个角度讨论周期图法估计的性能:泄漏,分辨率,偏差和方差。
频谱泄漏考虑有限长信号[]L x n ,把它表示成无限长序列[]x n 乘以一个有限长矩形窗[]R w n 的乘积的形式经常很有用:[][][]L R x n x n w n =⋅因为时域的乘积等效于频域的卷积,所以上式的傅立叶变换是()()()/2/21s s f L R sf X f X W f d f ρρρ-=-⎰前文中导出的表达式()()2ˆL xxs X f P f f L=说明卷积对周期图有影响。
正弦数据的卷积影响最容易理解。
假设[]x n 是M 个复正弦的和[]1k Mj n k k x n A e ω==∑其频谱是()()1Ms k k k X f f A f f δ==-∑对一个有限长序列,就变成了()()()()/211/21s s f M ML s k k R k R k k k sf X f f A f W f d A W f f f δρρρ==-=--=-∑∑⎰所以在有限长信号的频谱中,Dirac 函数被替换成了形式为()R k W f f -的项,该项对应于矩形窗的中心在k f 的频率响应。
一个矩形窗的频率响应形状是一个sinc 信号,如下所示-500-400-300-200-1000100200300400500-80-70-60-50-40-30-20-100矩形窗在物理频率上的功率谱密度frequency/HzP S D d B w a t t /H z该图显示了一个主瓣和若干旁瓣,最大旁瓣大约在主瓣下方13.5dB 处。
这些旁瓣说明了频谱泄漏效应。
无限长信号的功率严格的集中在离散频率点k f 处,而有限长信号在离散频率点k f 附近有连续的功率。
因为矩形窗越短,它的频率响应对Dirac 冲击的近似性越差,所以数据越短它的频谱泄漏越明显。
考虑下面的100个采样的序列randn('state',0)fs = 1000; % Sampling frequencyt = (0:fs/10)/fs; % One-tenth of a second worth of samples A = [1 2]; % Sinusoid amplitudes f = [150;140]; % Sinusoid frequenciesxn = A*sin(2*pi*f*t) + 0.1*randn(size(t)); Hs = spectrum.periodogram; psd(Hs,xn,'Fs',fs,'NFFT',1024)00.050.10.150.20.250.30.350.40.450.5-80-70-60-50-40-30-20-100Frequency (kHz)P o w e r /f r e q u e n c y (d B /H z )Power Spectral Density Estimate via Periodogram注意到频谱泄露只视数据长度而定。