2016-11-26 9 views
1

Ответа на вопрос, задаваемый здесь Why is complex conjugate transpose the default in MatlabMatlab: (.) ​​^ * T операция для комплексных чисел

говорит, что для комплексных чисел мы можем использовать ' символ для обозначения операции транспонирования, которая используется для действительных чисел. Математически операция транспонирования, которая выполняется для вещественных чисел, обозначается символом (.)^T. Для транспонирования комплексных чисел эквивалентный символ равен (.)^H. То, как это делается, - это сначала взять сопряжение комплексного числа, а затем взять его транспонирование. Это операция (.)^H.

Я хочу реализовать операцию (.)^{*T} = (.)^H для комплексного номера. Для этого я использовал символ апострофа. Пожалуйста, поправьте меня, где не так.

Я хотел подтвердить, правильна ли моя реализация концепции или нет использования Matlab. Например, для реальных ценного вектора A_r, я хочу, чтобы умножить его с транспонированной multiply_r = A_r*A_r'

тиражирования же для комплекса значного вектора A_c, эта операция станет multiply_c = A_c * A_c'

A_r =[1,2,3]; %real valued vector 
B_r = A_r'; %transpose of real valued vector 
multiply_r =A_r*B_r; 

A_c = [1 + sqrt(-1)*1, 2+sqrt(-1)*2, 3+sqrt(-1)*3]; %complex valued vector 
B_c = A_c'; %transpose of complex valued vector 
multiply_c = A_c*B_c; 

Является ли это хорошо?

UPDATE: Я пытаюсь перенести нормальный перенос этого комплекснозначного массива так, чтобы он располагался в 3-х строках и 1 столбце вместо 1 строки и 3 столбца. Использование оператора .' Я получаю странные значения, потому что массив теперь увеличен в размере! Каков правильный путь?

h = [ -5.1053 + 3.6797i 1.3327 + 5.7339i 4.1302 -10.7521i].' 

h = 

    -5.1053 + 3.6797i 
    1.3327 + 5.7339i 
    4.1302   
     0 -10.7521i 
+1

Looks godd. Но это зависит от того, что вы хотите сделать. Если для сложных чисел вы хотите транспонировать (без сопряжения), используйте '.''. Если вы хотите, чтобы конъюгатная транспозиция использовала '' ' –

+0

@Luis Mendo: я хочу выполнить операцию, эквивалентную $ (.)^{* T} = (.)^H $. Тогда что я должен использовать? Является ли это сопряженное транспонирование? – SKM

+0

Кстати, вам не нужно писать 'sqrt (-1)' у вас есть символы 'i' и' j' для этого в Matlab. – Shai

ответ

2

Как вы отметили, Matlab имеет как матрица "транспонировать" ((.)^T) и "сопряженное транспонирование" ((.)^H) определены.
Для вещественного транспонированной, у вас есть transpose, которые могут быть выражены как оператор .' (обратите внимание перед ' «»):

aT = transpose(a); 
isequal(aT, a.'); % transpose() and .' are the same 

Для комплексно сопряженное транспонирование вас есть ctranspose, которые могут быть выражены как оператор ' (примечание нет нет. перед '):

aH = ctranspose(a); 
isequal(aH, a'); % ctranspose and ' are the same 

Вы можете проверить с помощью conj:

isequal(a', conj(a).'); 
+0

Не могли бы вы увидеть обновление в моем вопросе? У меня возникла странная ситуация при использовании оператора для конкретного случая. – SKM

+0

@SKM используйте запятые для разделения значений. – Shai

+0

Эти значения генерируются программой во время выполнения с использованием уравнения, я не могу поместить запятую. Есть ли способ, с помощью которого, когда уравнение вычисляет эти значения, я могу поместить запятую? – SKM