xulinzero 发表于 2008-10-10 17:00

急啊,急切希望大家帮我讨论一下,感激不尽!

%%%%%关于用互相关函数进行互谱分析
clear
load 'wind.txt'; %导入数据文件
M=2;
N=3;
%变换此处的M和N的值可以求不同点的互谱
X=wind(:,M);
Y=wind(:,N);
= cpsd(X,Y,[],[],512,6.25);

其中cpsd函数是进行互谱分析的,但其所用的方法是经典谱估计的welch方法,其谱线起伏度还是很大,我查了很多资料,好像现在进行的互谱分析用的都是cpsd,我想能不能用现代谱估计(例如burg)方法代替,程序如下:
M=2;
N=3;
%变换此处的M和N的值可以求不同点的互谱
X=wind(:,M);
Y=wind(:,N);
cxy = cohere(X,Y,256,6.25);
=pburg(X,6,256,6.25);
=pburg(Y,6,256,6.25);
for n=1:129
=(Pxx1(n)*Pxx2(n))*cxy(n);
end
其中红色部分就是改后的,先进行自谱估计,再根据相关函数与互谱、自谱的关系(用相关函数乘以两个信号的自谱)。
不知这种方法可行?望高手指教。

[ 本帖最后由 xulinzero 于 2008-10-10 17:06 编辑 ]

xulinzero 发表于 2008-10-10 17:05

急啊,希望大家帮我讨论一下

:@) 望高人指教
小弟不盛感激!

songzy41 发表于 2008-10-10 18:20

本帖最后由 wdhd 于 2016-9-12 14:27 编辑

原帖由 xulinzero 于 2008-10-10 17:00 发表
%%%%%关于用互相关函数进行互谱分析
clear
load 'wind.txt'; %导入数据文件
M=2;
N=3;
%变换此处的M和N的值可以求不同点的互谱
X=wind(:,M);
Y=wind(:,N);
= cpsd(X,Y,[],[],512,6.25);
其中cpsd函数是进行互谱分析的,但其所用的方法是经典谱估计的welch方法,其谱线起伏度还是很大,我查了很多资料,好像现在进行的互谱分析用的都是cpsd,我想能不能用现代谱估计(例如burg)方法代替,程序如下:
...
我认为在谱线起伏度还是很大是信号的真实反映,要想减少起伏的话,可以对cpsd中的noverlap进行设置,以便求出多个谱进行平均,以减小起伏。
同时LZ设置=pburg(X,6,256,6.25)中p用6,当然使频谱光滑,因为只允许3个峰值,当把p的设置加大,谱线一样会有起伏了。

[ 本帖最后由 songzy41 于 2008-10-10 19:28 编辑 ]

xulinzero 发表于 2008-10-10 21:47

回复 板凳 songzy41 的帖子

你好 谢谢你的回复
我现在做的是用AR法模拟一个风场, 然后进行谱密度分析,使得它的自谱和互谱与目标谱(kaimal谱)能够很好的拟合,以前用的是pwelch(Y,256,6.25)函数,但是pwelch在低频的时候模拟的精度很差,且起伏很大,所以现在要想办法改进这种算法,提高它与目标谱的拟合精度。
在burg算法中当p 取很低的时候,它的自谱与kaimal谱正好能够很好的吻合,所以我就没有按照常规的阶数选取方法,而是取得很低。但是互谱分析是由于只有cpsd函数,它用到的其实还是welch算法,无法改进,所以我就想是否能够按照上面的方法用相关函数与互谱、自谱的关系间接的代替cpsd函数,使用自谱估计的burg算法估计自谱,再得到互谱,从而避开使用welch算法,不知道这样是否可行?
页: [1]
查看完整版本: 急啊,急切希望大家帮我讨论一下,感激不尽!