加速度功率 发表于 2006-5-14 10:02

加速度功率谱

跪求输出信号的功率谱matlab计算程序,在simulink中将信号x输出到工作空间后,如何求出该信号的功率普?

NVHht 发表于 2006-5-14 19:13

给你两个例子参考参考(具体可参考《Matlab 7辅助信号处理技术与应用》):
x(n)的功率谱估计:
clear all;
Fs=1000;%采样频率
%产生含有噪声的序列
var=sqrt(1/exp(1.0));
n=0:1/Fs:1;
N=length(n);
e=var*randn(1,N);
w0=100*pi;
w1=50*pi;
xn=exp(j*w0*n-j*pi)+exp(j*w1*n-j*0.7*pi)+e;

%绘制信号波形
subplot(311)
plot(n,abs(xn))
xlabel('n')
title('x(n)=exp(j*w0*n-j*pi)+exp(j*w1*n-j*0.7*pi)+e(n)')

%计算序列的DFT
nfft=1024;
Xk=fft(xn,nfft);
%计算序列的PSD
Pxx1=abs(Xk).^2/N;
%绘制功率谱图形
index=0:round(nfft/2-1);
k=index*N/nfft;
plot_Pxx1=10*log10(Pxx1(index+1));
subplot(312)
plot(k,plot_Pxx1)
ylabel('公式直接计算的功率谱')

%periodogram函数计算的功率谱
window=boxcar(length(xn));
=periodogram(xn,window,nfft,Fs);
plot_Pxx2=10*log10(Pxx2(index+1));
subplot(313)
plot(k,plot_Pxx2)
xlabel('periodogram函数计算的功率谱')

x(n)的间接法功率谱估计:
clear all;
Fs=1000;% 采样频率
% 产生含有噪声的序列
var=sqrt(1/exp(1.0));
n=0:1/Fs:1;
N=length(n);
e=var*randn(1,N);
w0=100*pi;
w1=50*pi;
xn=exp(j*w0*n-j*pi)+exp(j*w1*n-j*0.7*pi)+e;

% 绘制信号波形
subplot(311)
plot(n,abs(xn))
xlabel('n')
title('x(n)=exp(j*w0*n-j*pi)+exp(j*w1*n-j*0.7*pi)+e(n)')

% 计算序列的自相关函数
m=-500:500
=xcorr(xn,500,'biased')
subplot(312)
hndl=stem(m,r);
set(hndl,'Marker','.')
set(hndl,'MarkerSize',2);
ylabel('自相关函数R(m)')

% 利用间接法计算功率谱
k=0:1000;
w=(pi/500)*k;
M=k/500;
X=r*(exp(-j*pi/500).^(m'*k));
magX=abs(X);
subplot(313)
plot(M,10*log10(magX));
xlabel('功率谱的BT法估计')

finland 发表于 2006-6-14 21:23

请教各位高手,为什么对于同一个信号,采用不同的方法,其功率谱的幅植相差很大???那么功率谱的幅值的物理意义究竟是什么呢

simon21 发表于 2006-6-17 22:02

请教各位高手,为什么对于同一个信号,采用不同的方法,其功率谱的幅植相差很大???那么功率谱的幅值的物理意义究竟是什么呢

http://forum.vibunion.com/thread-17307-1-1.html
已作回复
页: [1]
查看完整版本: 加速度功率谱