Нормализация на комплексни числа

Имам файл с данни, който е под формата на масив. Искам да нормализирам всички комплексни числа в този масив. Но не искам да използвам z/Abs[z] този подход. Искам да използвам различен подход като z-резултат. Например в z-score можете да намерите стандартното отклонение и можете да нормализирате всички числа, но аз се опитвам да нормализирам комплексни числа. И така, как мога да направя това?


person Isaac04    schedule 27.10.2013    source източник


Отговори (2)


Z-резултат за реални числа:

Z = (X - Avg) / SD

Очевидният подход, който идва на ум, би бил изчисляването на средното и стандартното отклонение за реалната равнина и въображаемата равнина независимо.

Тогава вероятно ще променим формулата, за да използваме нещо като sqrt (сума на квадратите) подход за комбиниране на реални и въображаеми компоненти или резултати.

Zr = (Xr - AvgR) / SDr
Zi = (Xi - AvgI) / SDi

И накрая:

Zc = sqrt( Zr^2 + Zi^2)

Това вероятно би бил най-лесният начин за получаване на един Z-резултат от комплексно число в рамките на неговото разпределение.

Това, разбира се, е различно от „нормализиране“, което ще запази отделни компоненти и това, което първоначално отговорих. Но аз вярвам, че един резултат, измерващ разстоянието от средната стойност, е това, което търсите тук.

person Thomas W    schedule 27.10.2013
comment
Колко вярно е да нормализирам данните си независимо една от друга. Хрумна ми, но не бях сигурен дали е най-добрият подход. - person Isaac04; 28.10.2013
comment
Всъщност, като гледам Z-Score, мисля, че търсите измерване на разстоянието от разпределението -- „нормализиране“ е различно понятие. Вижте моя редактиран отговор. - person Thomas W; 28.10.2013
comment
z-резултатът беше само пример. Знаете ли начин за нормализиране на комплексни числа освен z/Abs[z]? - person Isaac04; 28.10.2013
comment
Е, вече ти дадох два отговора @Isaac04.. И двата биха били добри при съответните обстоятелства. Гледайки въпроса ви, изглежда, че Z-резултатът най-много прилича на това, което търсите. - person Thomas W; 28.10.2013

можете да нормализирате комплексния си вектор като

norm = np.exp(1j*np.angle(z))

въпреки че е по-бавен, но има предимство пред

z/abs(z)

тъй като ако z е нула и направите горното изчисление, ще получите nan. дори ако премахнете nan с 0, ще получите 0 по всякакъв начин, защото нормализираната дължина не може да бъде нула. Ако използвате този нормализиран вектор с дължина 0, за да зададете фазата на всеки друг вектор, винаги ще получавате 0. Зависи какво търсите

алтернативно можете да направите

z1=z/abs(z)
z1[np.isnan(z)]=1

тъй като нормализираната дължина трябва да бъде 1

за разбирането

person hsinghal    schedule 18.11.2015
comment
Имате ли източник за първото си предложение? - person Carl Thomé; 12.08.2018
comment
Първият израз идва от exp(i * x) = cos(x) + i * sin(x) и следователно е просто равен на cos(angle(z)) + i * sin(angle(z)). Въпреки това, не е като angle(z) да е добре дефинирана величина и за z = 0, така че вие ​​просто прехвърляте отговорността за обработката на нула/безкрайност към друга функция. - person Mojca; 24.09.2019