为什么用matlab将两个信号叠加后,再进行FFT后的图像和分别FFT的图像叠加的不同?(图像是功率频谱图)

 我来答
showtime_97
2014-04-30 · TA获得超过4784个赞
知道大有可为答主
回答量:1005
采纳率:90%
帮助的人:835万
展开全部

应该是相同的,有图,有程序,有真相。

 

%两信号叠加信号的频谱和分别频谱的叠加

t=0:0.001:1;%设定信号时间为0到1秒,频率为1000HZ
s1=sin(300*pi*t);%信号1
s2=sin(100*pi*t);%信号2
y=s1+s2;%叠加信号
Y=fft(y,512);%512点的FFT
Pyy=Y.*conj(Y)/512;%叠加信号功率谱
f=1000*(0:256)/512;%计算横轴频率值

Y1=fft(s1,512);%512点的FFT 信号1
Ps1=Y1.*conj(Y1)/512;%信号1功率谱

 

Y2=fft(s2,512);%512点的FFT 信号2
Ps2=Y2.*conj(Y2)/512;%信号2功率谱

 

PP=Ps1+Ps2;%信号1,2功率谱叠加

 

figure(1)
subplot(1,2,1),plot(t,y),title('叠加信号'),xlabel('时间(S)')
subplot(1,2,2),plot(f,Pyy(1:257)),title('叠加信号功率谱'),xlabel('频率(Hz)')

 

figure(2)
subplot(2,2,1),plot(t,s1),title('信号1'),xlabel('时间(S)')
subplot(2,2,2),plot(f,Ps1(1:257)),title('信号1功率谱'),xlabel('频率(Hz)')
subplot(2,2,3),plot(t,s2),title('信号2'),xlabel('时间(S)')
subplot(2,2,4),plot(f,Ps2(1:257)),title('信号2功率谱'),xlabel('频率(Hz)')

 

figure(3)
subplot(2,1,1),plot(f,Pyy(1:257)),title('叠加信号功率谱'),xlabel('频率(Hz)')
subplot(2,1,2),plot(f,PP(1:257)),title('信号1,2功率谱叠加'),xlabel('频率(Hz)')

 

追问

谢谢啊~但是如果s2=2*sin(300*pi*t)的话就不同了

这是为什么?

追答

      这是个很有意思的问题,从数字计算方面,很好解释,在计算功率谱的时候要进行平方,而你的信号叠加是做加法,那么(a+b)^2=a^2+b^2+2ab,就是这个2ab导致了功率谱的变化,这里啊a和b可以理解为信号1和2的幅值谱(注意a和b都是一组数啊)。我原先的程序由于在50hz和150hz时,对应的b或a在这里的值都非常小,所以2ab这个值是很小的,(a+b)^2约等于a^2+b^2,所以两种功率谱并没有什么变化。

      而当你将两个信号的频率调为一致时,(a+b)^2=(a+2*a)^2=a^2+(2a)^2+2*2*a*a,这里a^2+(2a)^2分别对应信号1,2的功率谱的叠加,(a+b)^2对应叠加信号的功率谱,两个功率谱相差2*2*a*a,而这时在两个信号幅值谱都在150hz上有很大的值,所以2*2*a*a很大,对于你追问的图来说相差4*a^2=4*240^2=230400(这里你可以计算一下信号1 在150赫兹时的幅值,我这里只是在图上估计的240,不是很准但也可以说明问题了),然后计算功率谱还要再除以512,得450,也就是你追问的两个图的差异所在了。

      所以你的问题主要是使用了功率谱来分析信号,我把功率谱的代码改成幅值谱后就一致了。哎呀,累死朕了,我欲醉眠君且去,吃点东西先!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式