matlab fft()函数对一正弦函数频谱分析的困惑

来源:百度知道 编辑:UC知道 时间:2024/06/20 11:46:33
我对一个在一段时间内频率为5M的10个周期的正弦波信号做fft,结果发现核心频率的最大值没有出现在5M位置处,不知道问题出在什么地方?希望大家帮忙!
附上我的激励函数,和fft分析程序
function [Vi,T]=Sin_Impulse()
t0=2E-6; % 10个周期
Vamp=1; % 电压幅值10V
f=5E6; % 脉冲5MHz
w=2*pi*f; % 角频率
index=1;
for t=0:(1E-9):1E-5;
if(t<=t0)
Vi(index)=Vamp*sin(w*t);
else
Vi(index)=0;
end

T(index)=t;
index=index+1;
plot(T,Vi);
end

>> Y=fft(Vi,512);
>> Pyy=Y.*conj(Y)/512;
>> f=1E8/512*(0:255);
>> plot(f,Pyy(1:256))

f=1E8/512*(0:255); 这个有问题的,采样频率为100M,即1E9
改为f=1E9/512*(0:255)即可;
另外你写的这个程序效率太低,改写了下
t0=2E-6; % 10个周期
Vamp=1; % 电压幅值10V
f=5E6; % 脉冲5MHz
w=2*pi*f; % 角频率
index=1;
t1=0:(1E-9):1E-5;
Vi = zeros(size(t1));
t=0:(1E-9):t0;
Vi(1:2001) = Vamp*sin(w*t);
plot(t1,Vi)

>> Y=fft(Vi,512);
>> Pyy=Y.*conj(Y)/512;
>> f=1E9/512*(0:255);
>> plot(f,Pyy(1:256))