Problem with complex number multiplication and division
古いコメントを表示
Hello, thanks for looking at this, this is potentially a very stupid question.
I'm having a problem with signs for complex conjugates when I multiply complex numbers two ways. In the first way, I have a simple calculation:
Rws(n,m)+j*w(m)*Iws(n)-Cws(n,m)*j/w(m)
to give me a value (in this case, it was 1.366e+09 + 5.937e+09i). My matrices are [9 800] in size, and I wanted to not do this in loops, but instead vectorize the calculation. So, instead, I change it to this:
Rws+j*Iws*w-bsxfun(@rdivide, Cws*j, w);
and I get the same answer with a small twist: the sign on the complex number was switched (1.366e+09 - 5.937e+09i). This change in sign is prevalent in all other members in the matrix, but the calculation was identical. In this, Rws is a 9x800 matrix, Iws is a 9x1 vector, w is a 1x800 vector, and Cws is a 9x800 matrix.
I can bypass this problem by switching the addition with the subtraction in the second equation, but I wanted to know if there was a reason I was getting this mismatched sign. Any ideas?
Thanks for your help, I think I'm just missing something simple here.
EDIT: Included some matlab files for clarification, use run_it to run the program, check for the variables _forloop and _vectorized for reporting.
3 件のコメント
David Young
2015 年 10 月 12 日
I can't replicate the problem. This code gives identical results for Result1 and Result2.
Rws = rand(9, 800);
Cws = rand(9, 800);
Iws = rand(9, 1);
w = rand(1, 800);
Result1 = zeros(9, 800);
for n = 1:9
for m = 1:800
Result1(n,m) = Rws(n,m)+j*w(m)*Iws(n)-Cws(n,m)*j/w(m);
end
end
Result2 = Rws+j*Iws*w-bsxfun(@rdivide, Cws*j, w);
John D'Errico
2015 年 10 月 12 日
My guess is you transposed something along the way. Since you have not actually shown us an explicit example, so we cannot know.
Brian
2015 年 10 月 13 日
回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!