用matlab做谱分析程序,经典功率谱分析Matlab程序

一、直接法

clear;clc;close all; %清除变量;清屏;关闭当前图形窗口

Fs=1000;

t=0:1/Fs:1;

nfft=2048; %改变nfft的值可对比不同采样值时的谱估计效果%****************生成信号、噪声**************%

x1=cos(2*pi*40*t)+3*cos(2*pi*45*t);%信号

x2=randn(size(t)); %噪声

x3=x1+x2; %信号+噪声

[Pxx,f]=periodogram(x3,window,nfft,Fs); %直接法

plot(f,10*log10(Pxx));title('直接法 nfft=2048');;

set(gca,'xlim',[1 120]); ;ylabel('Am/dB');

xlabel('Frequency/Hz');

二、间接法

Fs=1000;% 采样频率

n=0:1/Fs:1;% 产生含有噪声的序列

x1=cos(2*pi*40*n)+3*cos(2*pi*45*n);%信号

x2=randn(size(n)); %噪声

x3=x1+x2; %信号+噪声

nfft=1024;

cxn=xcorr(x3);% 计算序列的自相关函数

CXk=fft(cxn);

Pxx=abs(CXk);

index=0:round(nfft/2-1);

f=index*Fs/nfft;

plot_Pxx=10*log10(Pxx(index+1));

figure (1)

plot(f,plot_Pxx);

title('间接法 nfft=1024');ylabel('Am/dB');

set(gca,'xlim',[1 120]);

xlabel('Frequency/Hz');

三、Bartlett法

clear;clc;close all; %清除变量;清屏;关闭当前图形窗口

Fs=1000;

t=0:1/Fs:1;

nfft=1024;

%****************生成信号、噪声**************%

x1=cos(2*pi*40*t)+3*cos(2*pi*45*t);%信号

x2=randn(size(t)); %噪声

x3=x1+x2; %信号+噪声

window=hamming(512); %海明窗

noverlap=0; %数据无重叠

p=0.9; %置信概率

[Pxx,Pxxc]=psd(x3,nfft,Fs,window,noverlap,p);

你可能感兴趣的:(用matlab做谱分析程序)