Вот мой код для генерации треугольной формы волны во временной области и для генерации соответствующей серии / преобразования Фурье (я не знаю, является ли эта серия или преобразование, потому что 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
Вы можете объяснить, почему это происходит? И что я могу сделать, чтобы получить постоянные графики амплитудного и фазового спектров при любой частоте дискретизации?