为什么用matlab将两个信号叠加后,再进行FFT后的图像和分别FFT的图像叠加的不同?(图像是功率频谱图)
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/26 22:58:07
为什么用matlab将两个信号叠加后,再进行FFT后的图像和分别FFT的图像叠加的不同?(图像是功率频谱图)
应该是相同的,有图,有程序,有真相.
%两信号叠加信号的频谱和分别频谱的叠加
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,也就是你追问的两个图的差异所在了。 所以你的问题主要是使用了功率谱来分析信号,我把功率谱的代码改成幅值谱后就一致了。哎呀,累死朕了,我欲醉眠君且去,吃点东西先!
%两信号叠加信号的频谱和分别频谱的叠加
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,也就是你追问的两个图的差异所在了。 所以你的问题主要是使用了功率谱来分析信号,我把功率谱的代码改成幅值谱后就一致了。哎呀,累死朕了,我欲醉眠君且去,吃点东西先!
MATLAB中,对于给定的一个信号y,进行FFT变换后,得到的频谱图的横坐标和纵坐标分别表示什么?
MATLAB对一张图像做傅里叶变换FFT的意义,已经图像功率谱绘制
MATLAB中进行FFT谱分析,如何将频谱图的横坐标转换成频率?
如何用matlab 绘制出如图三角调幅信号的频谱图(转化为数字序列,用FFT求)
使用FFT分析方波三角波信号的频谱,讨论采样点数,采样频率对频谱分辨率的影响,对数据叠加白噪声再分析
请问用Matlab进行FFT变换后画的波形为什么总是称的?
为什么用matlab里的FFT对一个记录下来的波形(列向量)进行分析,采样频率不同,经过FFT后的最大幅值对应的频率值不
【求助】Matlab运用FFT分析信号的频谱 用MATLAB 1,对矩形窗序列x1(n)=R8(n)进行频谱分析,截取长
matlab做fft频谱分析的疑问!
一周期信号进行FFT分析,结果频谱上频率为零的谱线很高,为什么?
为什么matlab wgn函数产生的白噪声信号用FFT频谱分析结果不是一条直线
急需MATLAB程序,用FFT求信号x(t)=sin(40πt)的频谱