马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我用下面的程序对余弦信号做频谱分析,当信号频率大于1的时候都正确,但是如果原始信号频率小于1时就不正确,
请问是精度设置的不够高,还是采样频率和采样点数不对!
下面的程序是Mathematica程序,Matlab程序试了也一样
A1 = 3; (*% 频率F1信号的幅度*)
(*F1=1/(2 Pi); (*% 信号1频率 (Hz)*)*)
F1 = 0.11;
Fs = 256; (*% 采样频率 (Hz),要大于信号频率的两倍*)
P1 = 100; (*% 信号1相位 (度)*)
NN = 2048; (*% 采样点数,通常取2的整数次方*)
S = A1*Cos[2*Pi*F1*t + Pi*P1/180]; (*输入原始信号*)
Plot[S, {t, 0, 10}, PlotPoints -> 200, PlotLabel -> "原始信号"]
Plot[S, {t, 0, NN/Fs}, PlotPoints -> 200, PlotLabel -> "原始信号"]
b = Range[0, NN/Fs, 1/Fs];
g = S /. t -> b;
S1 = Take[g, Length[g] - 1];
Y = Fourier[S1, FourierParameters -> {1, -1}];
Ayy = Abs[Y];
ListLinePlot[Ayy, PlotRange -> All]
(*以下显示换算后的FFT模值结果*)
Ayy = Ayy/(NN/2);
Ayy[[1]] = Ayy[[1]]/2;
(*Ayy[[1]]=0;*)
F = Range[1, NN];
F = (F - 1)*Fs/NN;
FF = Array[h3, {NN/2, 2}];
Do[h3[i, 1] = F[[i]]; h3[i, 2] = Ayy[[i]], {i, 1, NN/2}];
ListLinePlot[FF, PlotRange -> All, Frame -> True,
FrameLabel -> {"频率/Hz", "振幅"}]
|