Size: a a a

2021 January 19

DT

Dmitry Teh in pro.algorithms
а вот скажите. чтобы восстановить сигнал из разложения, нужно сохранить мнимую часть. Её я буду использовать для мнимой части комплексных чисел для IFFT

а как быть с реальной частью? ведь в процессе я работаю с магнитудой и её просто в реальную часть подставлять «as is»?
источник

DP

Defragmented Panda in pro.algorithms
Dmitry Teh
а вот скажите. чтобы восстановить сигнал из разложения, нужно сохранить мнимую часть. Её я буду использовать для мнимой части комплексных чисел для IFFT

а как быть с реальной частью? ведь в процессе я работаю с магнитудой и её просто в реальную часть подставлять «as is»?
по-моему там сигнал раскладывается на реальную часть (магнитуду на частоте) и имг часть (фазу на частоте)

обе части нужны чтобы провести обратное преобразование

но имг часть можно выкинуть. для многих случаев фаза не важна
источник

d

disba1ancer in pro.algorithms
Dmitry Teh
а вот скажите. чтобы восстановить сигнал из разложения, нужно сохранить мнимую часть. Её я буду использовать для мнимой части комплексных чисел для IFFT

а как быть с реальной частью? ведь в процессе я работаю с магнитудой и её просто в реальную часть подставлять «as is»?
преобразование Фурье на выходе даёт комплексные числа, вычисляя модуль этого числа получаешь амплитуду, а вычисляя его аргумент — фазу, обратное преобразование требует на вход комплексные числа, потому из модуля и аргумента тебе снова надо получить комплексное число
источник

DT

Dmitry Teh in pro.algorithms
disba1ancer
преобразование Фурье на выходе даёт комплексные числа, вычисляя модуль этого числа получаешь амплитуду, а вычисляя его аргумент — фазу, обратное преобразование требует на вход комплексные числа, потому из модуля и аргумента тебе снова надо получить комплексное число
аа, я думал, что фаза — просто im часть

mag = sqrt(re^2 + im^2)  ; convert re, im to polar (mag, phi)
phi = atan2(im, re)

mag = mag * scale        ; apply factor `scale` to magnitude

re = mag * cos(phi)      ; convert new mag, phi back to re, im
im = mag * sin(phi)

получается буквально в пару строчек обратно восстанавливается. благодарю!
источник

d

disba1ancer in pro.algorithms
Dmitry Teh
аа, я думал, что фаза — просто im часть

mag = sqrt(re^2 + im^2)  ; convert re, im to polar (mag, phi)
phi = atan2(im, re)

mag = mag * scale        ; apply factor `scale` to magnitude

re = mag * cos(phi)      ; convert new mag, phi back to re, im
im = mag * sin(phi)

получается буквально в пару строчек обратно восстанавливается. благодарю!
как-то так, я на плюсах бы использовал специальный тип комплексных чисел
источник

M

MaxGraey in pro.algorithms
Dmitry Teh
а вот скажите. чтобы восстановить сигнал из разложения, нужно сохранить мнимую часть. Её я буду использовать для мнимой части комплексных чисел для IFFT

а как быть с реальной частью? ведь в процессе я работаю с магнитудой и её просто в реальную часть подставлять «as is»?
Если у тебя есть фаза и модуль ты всегда можешь их преобразовать обратно в комплексное представление:

C = fft(input) / length(input);
C_mag = abs(C);
C_phase = angle(C);

// обратное
Z = С_mag * exp(1j * С_phase); // это все комплексные операции
output = ifft(Z) * length(Z);
источник

DT

Dmitry Teh in pro.algorithms
а допустимо ли усреднять фазы?
источник

DP

Defragmented Panda in pro.algorithms
Dmitry Teh
а допустимо ли усреднять фазы?
сигнал можно восстановить пока количество данных на входе и на выходе одинаково. включая фазу в каждый момент времени

если ты удалишь часть данных (типа каждый второй элемент имг части после дфт заменить на среднее от окружающих) - ты потеряешь часть точности и на выходе
источник

DT

Dmitry Teh in pro.algorithms
мне нужно усреднить магнитуды за долгий период
можно ли так поступать с фазами?
источник

M

MaxGraey in pro.algorithms
Dmitry Teh
мне нужно усреднить магнитуды за долгий период
можно ли так поступать с фазами?
нет
источник

DP

Defragmented Panda in pro.algorithms
Dmitry Teh
мне нужно усреднить магнитуды за долгий период
можно ли так поступать с фазами?
данные после дфт не содержат "времени". лишь частоты

если ты говоришь о времени - это имеет смысл только до дфт (голый сигнал) или после обратного дфт (восстановленный сигнал)
источник

M

MaxGraey in pro.algorithms
Фаза это по сути угол. Попробуй взять среднее между 180 и 0 градусами
источник

CD

Constantine Drozdov in pro.algorithms
Defragmented Panda
по-моему там сигнал раскладывается на реальную часть (магнитуду на частоте) и имг часть (фазу на частоте)

обе части нужны чтобы провести обратное преобразование

но имг часть можно выкинуть. для многих случаев фаза не важна
Вроде бы для обратного преобразования, результат которого вещественный, достаточно суммы вещественной и мнимой части
источник

M

MaxGraey in pro.algorithms
И вообще усреднее это для spatial данных а не для частотной области
источник

DP

Defragmented Panda in pro.algorithms
Constantine Drozdov
Вроде бы для обратного преобразования, результат которого вещественный, достаточно суммы вещественной и мнимой части
если мы говорим "ну норм, звучит похоже" - то да.

если мы говорим о "востановлено эхо, реверберация, наложение сигналов" то нет
источник

DT

Dmitry Teh in pro.algorithms
MaxGraey
Фаза это по сути угол. Попробуй взять среднее между 180 и 0 градусами
90?
усредняемый сигнал условно равномерен — фоновый шум
там фазы на частоте могут скакать на противоположные?
источник

CD

Constantine Drozdov in pro.algorithms
Defragmented Panda
если мы говорим "ну норм, звучит похоже" - то да.

если мы говорим о "востановлено эхо, реверберация, наложение сигналов" то нет
Мы говорим о математическом факте
источник

DP

Defragmented Panda in pro.algorithms
Constantine Drozdov
Мы говорим о математическом факте
для мат корректного восстановления нужно комплексное число (2 значения на частоту). не сумма его значений
источник

M

MaxGraey in pro.algorithms
Dmitry Teh
90?
усредняемый сигнал условно равномерен — фоновый шум
там фазы на частоте могут скакать на противоположные?
или -90 / 270?
источник

CD

Constantine Drozdov in pro.algorithms
Defragmented Panda
для мат корректного восстановления нужно комплексное число (2 значения на частоту). не сумма его значений
вроде бы если результат фурье вещественный, то оно может быть получено как разность вещественной и мнимой части результата преобразования суммы вещественной и мнимой части
источник