matlab如何实现功率谱幅值曲线
我有一列响应数据,4096行。怎么用matlab实现功率谱曲线。谢谢!
如果有几列数据,互功率谱曲线怎么画。
多谢!!!急! 期待有人帮忙 可以用pwelch命令 本帖最后由 wdhd 于 2016-9-13 14:04 编辑
PWELCH Power Spectral Density estimate via Welch's method.
Pxx = PWELCH(X) returns the Power Spectral Density (PSD) estimate, Pxx, of a discrete-time signal vector X using Welch's averaged,modified periodogram method.By default, X is divided into eight sections with 50% overlap, each section is windowed with a Hamming window and eight modified periodograms are computed and averaged.
If the length of X is such that it cannot be divided exactly into eight sections with 50% overlap, X will be truncated accordingly.
Pxx is the distribution of power per unit frequency. For real signals, PWELCH returns the one-sided PSD by default; for complex signals, it returns the two-sided PSD.Note that a one-sided PSD contains the total power of the input signal. 本帖最后由 wdhd 于 2016-9-13 14:05 编辑
See also periodogram, pcov, pmcov, pburg, pyulear, peig, pmtm, pmusic, spectrum/welch, dspdata/psd, dspdata/msspectrum. 多谢回复!
有人能给出详细的中文回答吗?英文不好。 nfft=4096;
p=abs(fft(x,nfft));%x为你的数列名称
plot((0:nfft/2-1)/nfft*fs,p(1:nfft/2));% 即可画出功率谱曲线 本帖最后由 wdhd 于 2016-9-13 14:05 编辑
原帖由 camel2018 于 2008-12-19 10:45 发表
nfft=4096;
p=abs(fft(x,nfft));%x为你的数列名称
plot((0:nfft/2-1)/nfft*fs,p(1:nfft/2));% 即可画出功率谱曲线
好像不对吧,这样画出来的是FFT变换后的幅值谱,不是功率谱 这个论坛中好像有啊
多搜索下啊
我把我以前找到的贴一下
你参考下
把load data换成你的数据就行了
clear;
load x1.mat;
load y.mat;
y = y - mean(y);
plot(x,y);
%% 经典功率谱估计
Fs=416.6667; %采样频率
window=boxcar(length(y)); %矩形窗
nfft=512;
=periodogram(y,window,nfft,Fs); %直接法
figure
plot(f,Pxx);
%% 间接法
% Fs=100; %采样频率
% nfft=416.6667;
% cxn=xcorr(y,'unbiased'); %计算序列的自相关函数
% CXk=fft(cxn,nfft);
% Pxx=abs(CXk);
% index=0:round(nfft/2-1);
% k=index*Fs/nfft;
% plot_Pxx=10*log10(Pxx(index+1));
% plot(k,plot_Pxx);
%% Bartlett法(改进方法一)
% Fs=100;
% nfft=416.6667;
% window=boxcar(256); %矩形窗
% noverlap=0; %数据无重叠
% p=0.9; %置信概率
% =psd(y,nfft,Fs,window,noverlap,p);
% index=0:round(nfft/2-1);
% k=index*Fs/nfft;
% plot_Pxx=(Pxx(index+1));
% plot_Pxxc=(Pxxc(index+1));
% figure(1)
% plot(k,plot_Pxx);
% pause;
% figure(2)
% plot(k,);
%% 韦尔奇法
% Fs=100;
% nfft=416.6667;
% window=boxcar(100); %矩形窗
% window1=hamming(100); %海明窗
% window2=blackman(100); %blackman窗
% noverlap=20; %数据无重叠
% range='half'; %频率间隔为,只计算一半的频率
% =pwelch(y,window,noverlap,nfft,Fs,range);
% =pwelch(y,window1,noverlap,nfft,Fs,range);
% =pwelch(y,window2,noverlap,nfft,Fs,range);
% plot_Pxx=(Pxx);
% plot_Pxx1=(Pxx1);
% plot_Pxx2=(Pxx2);
%
% figure(1)
% plot(f,plot_Pxx);
%
% pause;
%
% figure(2)
% plot(f,plot_Pxx1);
%
% pause;
%
% figure(3)
% plot(f,plot_Pxx2); 多谢!问题已解决! 另外一个问题,我有一个3*4096的矩阵,想用它来构造hankel矩阵,比如说构造为30*30的hankel矩阵,改怎么做?
直接hankel不行。初学者,多谢!
页:
[1]