Вот мой код для генерации треугольной формы во временной области и для генерации ее соответствующих рядов/преобразований Фурье (я не знаю, является ли его серия или преобразование, потому что Matlab только имеет функцию преобразования Фурье, но поскольку сигнал является периодическим, ссылки скажем, что фурье-аналог должен называться рядами Фурье).Почему частотные спектры меняются при изменении частоты дискретизации?
x = 0;
s = 50; % number of sinusoidal components
fs = 330; % hertz
dt = 1/fs; % differential time
t = [0:dt:4]; % seconds
const = 2/(pi^2);
for k = 1:2:s,
x = x + (((-1)^((k - 1)/2))/(k^2)) * sin(4*pi*k*t);
end
x = const * x;
% amplitude = max(x) = 0.2477
% period = 0.5 seconds
f = linspace(-fs/2,fs/2,length(x));
xk = fftshift(fft(x));
figure;
subplot(3,1,1);
plot(t,x);
grid on;
xlabel('time(seconds)');
title('Time Domain');
subplot(3,1,2);
plot(f,abs(xk));
grid on;
xlabel('frequency(hertz)');
title('Magnitude Spectrum');
subplot(3,1,3);
plot(f,angle(xk));
grid on;
xlabel('frequency(hertz)');
title('Phase Spectrum');
А вот сгенерированные графики для сигнала временной области, спектра амплитуды и фазового спектра.
ссылка: fs = 330hz
Моя проблема, когда я изменил частоту дискретизации (Fs, которая в настоящее время равна 330 Гц) на другое значение, участки от величины и фазы изменения спектров.
Вот графики спектров амплитуды и фазы, когда частота дискретизации равна 400 Гц:
ссылка: fs = 400 hz
Можете ли вы объяснить, почему это происходит? И что я могу сделать, чтобы получить постоянные графики для амплитудных и фазовых спектров при любой частоте дискретизации?