rzeczywisty. Z uwagi na błędy zaokrąglenia rozsądnie jest jeśli spodziewamy się symetryczności dla bezpieczeństwa brać wartości bezwzględne
przy konwersji z czasu do częstotliwości, a przy konwersji odwrotnej część rzeczywistą wyniku.
Wpływ przesunięcia w czasie na FFT:
function [ k, t ] = sinc_gen( sampling_rate, cutfq, samples )
T = 1 / sampling_rate;
if (nargin == 2)
samples = 160 / (cutfq*2 / sampling_rate); % experimental
end
tout = T * (1:samples);
tout = tout - T*(samples+1)/2;
B = 2*cutfq;
k = sinc(B*tout);
k = k / trapz(k);
if (nargout == 2)
t = tout;
end
end
spectrum_cut = 20000;
fs = 3.5e6;
[k, t] = firwin(fs, spectrum_cut, 2047);
k1 = [zeros(1, 700), k];
K = fftshift(fft(k, 2047));
K1 = fftshift(fft(k1, 2747));
fx = linspace(-fs/2, fs/2, 2047);
fx1 = linspace(-fs/2, fs/2, 2747);
figure(1);
hold on;
plot(fx, abs(K), '.');
plot(fx1, abs(K1), 'r');
legend('org', 'shifted');
figure(2);
hold on;
plot(fx, unwrap(angle(K)), '.');
plot(fx1, unwrap(angle(K1)), 'r');
legend('org', 'shifted');
Niesymetryczność w czasie to niezerowa część urojona po stronie FFT:
figure(3);
hold on;
plot(fx, imag(K), '.');
plot(fx1, imag(K1), 'r');
legend('org', 'shifted');
Brak komentarzy:
Prześlij komentarz