发布网友 发布时间:2022-04-22 05:41
共1个回答
热心网友 时间:2024-01-30 17:58
fs=1500; %自己设置采样频率
N=4000; %自己设置采样点数
t = (0:N-1)/fs; %间隔
NFFT = 2^nextpow2(N);%转化为2的基数倍
f= fs/2*linspace(0,1,NFFT/2); %求出FFT转化频率
E=cos((1.9e14).*t).*(1900*cos(3e10).*t+pi/2); %函数
E_change=fft(E,NFFT)/N; %进行FFT变换
plot(f,2*abs(E_change(1:NFFT/2)),'b');
%画出频谱特性图
grid on;
上面是比较正规的fft变换,有的文章中没有求FFT转化频率(这样就少了一些步骤),即没有转化为2的基数倍,虽然可以画图也不会出错,但是如果详细阅读matlab自带的help帮助的话,就可以发现它们还是有差别的。本程序自己可以设置采样频率和采样点数。
由于matlab进行FFT变换后画出的图是个对称图,这点你可参阅其fft的帮助,根据帮助文献进行了(1:NFFT/2)处理,画出一半即可。
如果还想画出相频特性图,可以代码后面加上:
ph_E=180*angle(E*N)/pi;
plot(f,ph_E(1:NFFT/2));
grid on;
%画出相频特性图
还有,你的函数由于不能直接复制到matlab里面运行,在matlab里
1.9e14表示 1.9*10^14