功率谱估计中的问题
间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计。Matlab代码示例:clear;
Fs=250E6; %采样频率
nfft=256;
cxn=xcorr(xn,'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);
请问我将此程序输入matlab后发现Pxx是四列数据,可是plot_Pxx=10*log10(Pxx(index+1));这句执行完后就变成一列数据了,这是为什么呢?谢谢了四列数据分别表示是什么呢 现在有现成的软件系统了,但应用时千万不能不注意理论和软件的应用范围。
1)你要处理的信号是周期的还是随机信号,用256个采样点就要算出随机信号的谱估计,太离谱了。
2)相关函数的定义域是负无穷大到正无穷大,用256点采样算出来的相关叫循环相关,只适用于整周期的周期函数不适用于随机信号。周期函数就叫谱计算(精确的)不叫谱估计。谱估计的叫法适用于随机信号,你只用256个点的数据求随机信号的自相关和谱估计?
3)算随机信号的谱估计,离不开加窗,FFT,谱平均。。。一套。不走自相关的付氏变换的路。
4)跟谱估计联系在一起的,就有估计精度,置信区间,统计自由度一套,256个采样点算得的精度无论如何都是一塌糊涂!
举例:采集了随机变量上证指数数据,一分钟一个点200多点也就是一天(4小时)的数据,用这些数据可以算出比如平均值,只能是当天的平均值,用它来代表上证指数一年或更长时间的平均值估计,可靠性是大大值得怀疑的.
[ 本帖最后由 hcharlie 于 2010-1-12 11:18 编辑 ]
回复 沙发 hcharlie 的帖子
谢谢你的解释,我采集的是超声波信号,应该是随机信号,但是采集的底波波形就包括256个点,其余点的值都是为0. 我只是想找不同的特征参量将时域上无差别的波形区分出来,对于信号分析不太懂回复 沙发 hcharlie 的帖子
你好,我采集的波形总共含有2500个点,只有256个点式有用的药分析,是不好似就不能用谱估计?burg法的谱估计也不适用?回复 地板 tonghuayuxing 的帖子
通常的宽带随机信号的分析,如果每一帧256~1024点,通常取50~100帧的谱平均,即12800 ~ 102400点,其谱估计的误差大概是在90%置信度下为1dB以内。只取一帧误差实在不好说。如果你的信号像转子的振动信号,或窄带随机,它是处于随机与周期之间,看哪个成分更大一些了!
[ 本帖最后由 hcharlie 于 2010-1-12 15:19 编辑 ]
回复 5楼 hcharlie 的帖子
谢谢,请问你知道用burg法进行谱估计的阶数根据什么来确定吗?我看了文献说AIC准则来确定比较准确,但是那个准则数学公式都看不懂,matlab里有直接用AIC准则来确定阶数的程序语句吗? 本帖最后由 wdhd 于 2016-9-20 13:16 编辑原帖由 tonghuayuxing 于 2010-1-11 16:14 发表
...发现Pxx是四列数据,可是plot_Pxx=10*log10(Pxx(index+1));这句执行完后就变成一列数据了...
Pxx会是四列数据? 不解!?
若是的话, Pxx(index+1)即会就变成一列数据!
页:
[1]