如何做两个数据的互功率谱 – MATLAB中文论坛

如何做两个数据的互功率谱 – MATLAB中文论坛,第1张

t=a(:,1)%%%%t是时间源败; yt=a(:,2)%%%%yt是数据渣裂闹; dt=t(2)-t(1)%%%%dt是点距; lt=length(t)%%%%是数据的长如罩度; f0=2*pi/lt%%%%f0是基频; fy=fft(yt)%%%%fy是fft变换得到的波谱; for i=1:1:lt f(i)=f0*(i-1)%%%%f是频率; P(i)=abs(fy(i))^2%%%P是功率谱; end plot(f,P)%%%%画图;

%就是对同一源信号想x1作延迟x2并加上噪声,然后用两前世种方法分析得到x1和x2的

%互相关函数!!并对穗冲加噪声的x1 分析了自相关函数

clear all

n=99

T=6

t=0:2*pi/(n-1):2*T*pi

N=length(t)

fs=1/(n-1)

x1=4*sin(t) %源信号

y1=4*sin(t+pi/6) %%源信号延迟pi/6相位

x=awgn(x1,20)%加高斯白噪声,信噪比SNR==20dB

y=awgn(y1,0.001) %同上

x2=awgn(x1./4,-3)

subplot(311),plot(t,x)

subplot(312),plot(t,y)

tic%tic和toc一起用于计算程序运算时间

[Cc,r]=xcorr(x,y) %xcorr用于求互相关矩阵函数,Cc为互相关矩阵,r为延迟矢量

[Cc1,r1]=xcorr(x1,y1) %同上

subplot(313),plot(r*2*pi/(n-1),Cc,'r'),hold on

plot(Cc1,'-')

tic

S1=fft(x,2*N-1) %求x的2*N-1点fft

S2=fft(y,2*N-1)

X=S1.* conj(S2)%求x和y的互功率谱

R1=real(fftshift(ifft(X)))%利用ifft求反变换得到互相关函数,用fftshift反转

toc %对应tic求计算时间

figure(2)

subplot(211),plot(Cc),title('xcorr')

subplot(212),plot(R1)

title('ifft')

figure(3)

plot(xcorr(x2,'unbiased')) %求猜悔歼x2的自相关函数并作图


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12397458.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存