用matlab实现功率谱

用matlab实现功率谱,第1张

n=0:0.1:200%设定信号时间长度为0到200秒,采样间隔0.1,则采样频率为10HZ,点数2001

y=sin(2*pi*0.2*n)+sin(2*0.213*n)

Y=fft(y)%FFTPyy=Y.*conj(Y)/2000%信号功率谱f=10*(0:1000)/2000%计算横轴频率值figure(1)subplot(2,1,1),plot(n,y),title('信号'),xlabel('时间(S)')subplot(2,1,2),plot(f,Pyy(1:1001)),title('信号功率谱'),xlabel('频率(Hz)')

请采纳答案,支持我一下。

t=a(:,1)%%%%t是时间;

yt=a(:,2)%%%%yt是数据;

dt=t(2)-t(1)%%%%dt是点距;

lt=length(t)%%%%是数据的长度;

f0=2*pi/(lt*dt)%%%%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)%%%%画图;

f的单位是秒分之一。就是频率。

P是没有单位的,就是振幅大小。如果有那是yt单位的平方。

没学过信号。。

语句大概x(n)=4sin200πn-2sin20πn+v(n), 用后面的公式生成一个以x命名的数组

:Fs=500NFFT=1024 赋值

n=0:1/Fs:1 n是从0开始到1的以1/Fs为等差的数列

vx=randn(1,length(n))vx是从1到n的长度的随机数

Cx=xcorr(x,'unbiased')随机信号相关函数的无偏互相关估计

)Cxk=fft(Cx,NFFT)对信号进行快速Fourier变换

)Pxx=abs(Cxk)求Cxk的绝对值

)t=0:round(NFFT/2-1)同上循环

P=10*log10(Pxx(t+1))调用Pxx 计算

plot(k,P)以kp为参数画图

都是手打。。累啊


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

原文地址: http://outofmemory.cn/yw/11137082.html

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

发表评论

登录后才能评论

评论列表(0条)

保存