Я пытаюсь построить частотный спектр синусоидальной волны с частотой 77,5 кГц и амплитудой 2. Только нулевая точка неверна, она сдвигается влево. Мой код:Matlab fftshift не работает правильно
f1=77.5e3; % frequency of the sinewave
a1=2; % amplitude of the sinewave
Fs = 1.55e6; % sampling frequency
dt=1/Fs; % step size
maxtime = 5*(1/f1);
t=0:dt:maxtime; % time interval in which we want to plot
x=a1*sin(2*pi*f1*t); % the values for the sinewave
N=length(t); % this is how many samples we have in the time-domain
X=fft(x)/N;
X=fftshift(X);
f=[-N/2:1:N/2-1]*Fs/N; % creates a frequency axis
figure(1)
plot(f,abs(X))
title('Magnitude Spectrum of x(t)')
xlabel('Frequency [Hz]')
ylabel('|X(f)|')
Когда я запускаю этот код я получаю неправильный спектр частот. Может кто-нибудь мне помочь?
Edit: фигура я получаю при запуске этого кода:
Помимо некорректной нулевой точки я также получаю неправильную частоту, когда я считаю это сам от участка. Я просто не уверен, как я должен построить такую синусоидальную волну с частотой 77,5 кГц, амплитудой 2 и частотой дискретизации 1,55 МГц
Можете ли вы отправить пример? –
@OliverCharlesworth Я обновил свой вопрос –
, почему вы используете 'fftshift' ?? почему не просто 'fft (x, N)/N'? – Rashid