Я смущен манипуляцией сложными числами в 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) ];
не используя .'
иначе
возможно дубликат [комплексного и вещественного Matrice умножения в Matlab] (http://stackoverflow.com/questions/29232340/complex-and-real-matrice-multiplication- in-matlab) – knedlsepp
Это мой старый вопрос, я еще не нашел решение. Я думал, что проблема касается только сопряженной матрицы транспонирования. Но даже когда я исправил его, я не получил желаемого результата. Проблема заключается в самом умножении – Didon
Я не вижу разницы в этих двух вопросах. Если вы не уточните, какая разница между этими двумя, я голосую, чтобы закрыть. – knedlsepp