Всем спасибо за ответы. Идею я понял. Но на практике реализовать не получается. Вот что я пытаюсь сделать в MATLAB для проверки:
Код
N = 1024;
n = 0 : (N-1);
PPW = 20; % points per wave
x1 = sin(2 * pi * n / PPW);
X1 = fft(x1);
theta = pi / 4;
P = cos(theta) + j * sin(theta); % phase shift by theta
X2 = X1 * P;
x1i = ifft(X1);
x2i = ifft(X2);
Т.е. я генерирую синусоиду из 1024 точек и пытаюсь сдвинуть ее на 45 градусов. В частотной области вроде бы все хорошо. Я вижу, что ФЧХ X2 сдвинулась на theta радиан. Но результат обратного преобразования Фурье (x2i) представляет собой совсем не то, что я ожидал увидеть - это массив комплексных чисел. Насколько я понимаю, это потому, что ФЧХ после сдвига перестала быть симметричной.
Скажите, правильно ли я все делаю? И если да, то как мне из этого массива комплексных чисел получить сдвинутый сигнал во временной области?