2015-03-26 1 views
-1

Я смущен манипуляцией сложными числами в MATLAB. У меня EE является 9x4 реальной матрицей, которую я хочу умножить на комплекс 10x3 матрица SOLS. Код nitial в Matlab является:Путаница с манипуляциями с комплексными числами в MATLAB

Evec= EE*[SOLS' ; ones(1,10) ]; 

Эта линия, как правило, эквивалентна:

SOLSt=SOLS'; 

    for i=1:9 
    for j=1:10 
    Evec(i,j)=EE(i,1)*SOLSt(1,j)+EE(i,2)*SOLSt(2,j)+EE(i,3)*SOLSt(3,j)+EE(i,4); 
    end 
    end 

Почему выше dosen't петли дают тот же результат, как:

for i=1:9 
    for j=1:10 
    RE(i,j)=EE(i,1)*real(SOLSt(1,j))+EE(i,2)*real(SOLSt(2,j))+EE(i,3)*real(SOLSt(3,j))+EE(i,4); 
    IM(i,j)=EE(i,1)*imag(SOLSt(1,j))+EE(i,2)*imag(SOLSt(2,j))+EE(i,3)*imag(SOLSt(3,j))+EE(i,4); 
    end 
    end 
    Evec=complex(RE,IM); 

Когда я сделал SOLSt=SOLS', мы сделали конъюгатную транспозицию, это нормально. Теперь для умножения вещественной матрицы EE с комплексной матрицей SOLSt, которая является сопряженной транспонией SOLS. Математически это дает мнимое число, действительная часть которого относится к продукту EE(i) и Real(SOLSt(i)), а его мнимая часть относится к продукту EE(i) и imag(SOLSt(i)) , который переводится по второй версии, упомянутой выше, но это дает отличный результат от первого версия, которая также является умножением EE(i) на SOLSt(i). Что я понял из этой разницы в результатах, так это то, что когда я пишу EE(i)*SOLSt(i) Matlab dosen't выполняет точно произведение действительной части и мнимой части. Я не хочу использовать SOLS'., я просто хочу, чтобы найти тот же результат с исходной командой Evec= EE*[SOLS' ; ones(1,10) ]; не используя .' иначе

+0

возможно дубликат [комплексного и вещественного Matrice умножения в Matlab] (http://stackoverflow.com/questions/29232340/complex-and-real-matrice-multiplication- in-matlab) – knedlsepp

+0

Это мой старый вопрос, я еще не нашел решение. Я думал, что проблема касается только сопряженной матрицы транспонирования. Но даже когда я исправил его, я не получил желаемого результата. Проблема заключается в самом умножении – Didon

+1

Я не вижу разницы в этих двух вопросах. Если вы не уточните, какая разница между этими двумя, я голосую, чтобы закрыть. – knedlsepp

ответ

2

В строке, где сложная часть Evec, вы EE(i,4) в включенной сумме , Этого не должно быть, поскольку оно существует только в реальной части решения. Вещи работают хорошо, если вы используете вместо этого:

IM(i,j)=EE(i,1)*imag(SOLSt(1,j))+EE(i,2)*imag(SOLSt(2,j))+EE(i,3)*imag(SOLSt(3,j)); 
+0

Спасибо, ты спас мне жизнь! – Didon