Теперь я пытаюсь понять, как работает ДПФ. Итак, я реализовал это с помощью Matlab, чтобы сделать это как приведенный ниже код Matlab.
функция
и
clear all
clc
N=8;
dt=0.02;
fs=1/dt;
T=0.16;
tspan = (0:N-1)/fs;
y = 5+cos(2*pi*12.5*tspan)+sin(2*pi*18.75*tspan);
X=zeros(1,N);
for k = 0:N-1
for n = 0:N-1
X(k+1) = X(k+1) + y(n+1)*exp(-j*(2*pi/N)*k*n);
end
end
x_mag = abs(X);
plot(0:N-1,x_mag);
Я ожидал такого результата
но у меня есть
Что я должен сделать, чтобы получить правильный результат?
Обновить
Если я прибавлю N к 80 из 8, то у меня получится приведенный ниже график, но этот результат также кажется неверным.
частота отображается как 20 и 30, а не 12,5 и 18,75.
Обновление №1
Я нашел какие-то правила с приведенным ниже кодом Matlab. Когда я использую N=350, введите здесь описание изображения
dt=0.02
fs=1/dt % hz = 1/0.02 (delta T)
N=350;
tspan = (0:N-1)*dt;
y = 5+cos(2*pi*12.5*tspan)+sin(2*pi*18.75*tspan);
X=y;
X=zeros(1,N);
for k = 0:N-1
for n = 0:N-1
X(k+1) = X(k+1) + y(n+1)*exp(-j*(2*pi/N)*k*n);
end
end
x_mag = abs(X);
plot(0:N-1,x_mag);
и когда у меня есть N = 50, я могу на приведенном ниже графике ввести здесь описание изображения
Я думаю, когда у меня N=50, это кажется более правильным результатом.
Но я не могу понять, как мы определяем правильное N?