这个问题困扰了我好多天,今天通过各种测试,我觉得应该是找到了正解。分享给大家!以matlab fft变换后的频谱图中的某点(f(i),y(i))幅值和纵坐标y(i)的含义为对应横坐标f(i)频率出现的次数N*an/2, 其中an为频率f(i)对应的正弦波的振幅。下面是测试用的代码,大家可以自己试一下!clf;%对C1-1采样数据的处理clear yclear Yclear tnum=0;nt=500; %总的步数na=2;A=[4,3,];f=[];Owig=f*2*;Fai=[0,0,0,0,0,0];A=A';f=f';Owig=Owig';Fai=Fai';for j=1:1:ntt(j)=(j-1);%*;for i=1:1:nay(i,j)=A(i)*sin(Owig(i)*t(j)+Fai(i));endY(j)=sum(y(:,j));endfor i=1:1:nasubplot(4,2,i);plot(t,y(i,:));% %绘出随频率变化的振幅 % xlabel('f=');title(i);ylabel(A(i));grid on;end subplot(4,2,na+1); plot(t,Y);AM=max(Y);ylabel(AM);title('sum');grid on;Fai_Y=asin(Y(1)/AM);fs=1;N=nt; %采样频率和数据点数n=1:N;%t=n/fs; %时间序列x1=Y; %信号%x1 = detrend(x1); 这是啥啊????y1=fft(x1,N); %对信号进行快速Fourier变换mag=abs(y1); %求得Fourier变换后的振幅f=n*fs/N; %频率序列T=1./f;subplot(4,2,na+2); plot(f,mag)%plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅%axis([0 1 0 52000]); % 设置坐标轴在指定的区间xlabel('frequency/Hz');ylabel('Amplitude ');%title(name);grid on;[mp,index] = max(mag); %求最高谱线所对应的下标F_peak(i)=f(index);