реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Сдвиг фазы сигнала, в частотной области
Denvil
сообщение Apr 13 2011, 01:16
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 18-01-10
Пользователь №: 54 877



Здравствуйте.

Есть 2 оцифрованных синусоидальных сигнала x1 и x2 во временной области. x2 отстает от x1 по фазе, скажем, на 10 градусов. x2 переводится в частотную область и получается X2. Теперь нужно X2 сдвинуть по фазе на -10 градусов, перевести обратно во временную область и увидеть, что сигналы стали синфазными. Подскажите, пожалуйста, как осуществить этот сдвиг по фазе в частотной области?

P.S. Прошу прощения, если вопрос тривиальный или сформулирован некорректно. Это совсем новая для меня область.
Go to the top of the page
 
+Quote Post
Александр77
сообщение Apr 13 2011, 08:13
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Цитата(Denvil @ Apr 13 2011, 05:16) *
Есть 2 оцифрованных синусоидальных сигнала x1 и x2 во временной области. x2 отстает от x1 по фазе, скажем, на 10 градусов. x2 переводится в частотную область и получается X2. Теперь нужно X2 сдвинуть по фазе на -10 градусов, перевести обратно во временную область и увидеть, что сигналы стали синфазными. Подскажите, пожалуйста, как осуществить этот сдвиг по фазе в частотной области?

При переводе вы получаете 2 характеристики:
Амплитудно-частотную
Фазо-частотную.
Вот по ФЧХ и надо сравнивать/сдвигать и затем восстанавливать по обеим характеристикам
Go to the top of the page
 
+Quote Post
st232bd
сообщение Apr 13 2011, 14:12
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 12-02-08
Из: г.Минск (РБ)
Пользователь №: 34 969



Пролистайте представление комплексных чисел в векторной форме. Для того, чтобы повернуть вектор комплексного числа не меняя его длины (сдвинуть фазу не меняя амплитуды гармоники), нужно умножить на комплексное число, которое в векторной форме имеет амплитуду = 1, и аргумент равнй 10 градусам (надо в радианы перевести). Через формулу Эйлера переводим в алгебраическую форму записи, расписываем формулы для действительной и мнимой части и применяем их к синусной и косинусной части.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Apr 13 2011, 15:09
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Помойму так:

S(n) = Re(n) + Im(n); // Исходный спектр

S'(n) = S(n) * (Cos(Fi) + Sin(Fi)); // Сдвинут по фазе на Fi

Вещественный FFT;
Re' = Re * Cos(Fi) - Im * Sin(Fi);
Im' = Re * Sin(Fi) + Im * Cos(Fi);

Комплексный FFT;
Положительные частоты.
Re' = Re * Cos(Fi) - Im * Sin(Fi);
Im' = Re * Sin(Fi) + Im * Cos(Fi);
Отрицательные.
Re' = Re * Cos(Fi) + Im * Sin(Fi);
Im' = Re * Sin(Fi) - Im * Cos(Fi);

Fi = Pi * 10 / 180;

Сообщение отредактировал ivan219 - Apr 13 2011, 16:44
Go to the top of the page
 
+Quote Post
Denvil
сообщение May 6 2011, 04:49
Сообщение #5





Группа: Новичок
Сообщений: 4
Регистрация: 18-01-10
Пользователь №: 54 877



Всем спасибо за ответы. Идею я понял. Но на практике реализовать не получается. Вот что я пытаюсь сделать в 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) представляет собой совсем не то, что я ожидал увидеть - это массив комплексных чисел. Насколько я понимаю, это потому, что ФЧХ после сдвига перестала быть симметричной.

Скажите, правильно ли я все делаю? И если да, то как мне из этого массива комплексных чисел получить сдвинутый сигнал во временной области?
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение May 11 2011, 12:14
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Раз не совладали с комплксным FFT, то используйте FFT и IFFT, предназначенные для вещественного временного сигнала. Тогда комплексных чисел не возникнет.
Go to the top of the page
 
+Quote Post
Gyga
сообщение May 16 2011, 05:56
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 203
Регистрация: 3-06-08
Пользователь №: 38 014



можно взять реальную часть от комплексного сигнала
Go to the top of the page
 
+Quote Post
lux
сообщение May 16 2011, 16:24
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 4-10-06
Из: Ukraine
Пользователь №: 20 949



Цитата(Denvil @ May 6 2011, 07:49) *
Всем спасибо за ответы. Идею я понял. Но на практике реализовать не получается. Вот что я пытаюсь сделать в 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) представляет собой совсем не то, что я ожидал увидеть - это массив комплексных чисел. Насколько я понимаю, это потому, что ФЧХ после сдвига перестала быть симметричной.

Скажите, правильно ли я все делаю? И если да, то как мне из этого массива комплексных чисел получить сдвинутый сигнал во временной области?


Если подытожить, то получим обычное тригонометрическое преобразование sin( a+b )=sin( a )cos( b )+cos( a )sin( b ), где b-сдвиг фазы

Сообщение отредактировал lux - May 16 2011, 16:25
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016