real-valued signal constellation has hidden imaginary part
조회 수: 5 (최근 30일)
이전 댓글 표시
Hi guys!
I found something which isn't so nice in Matlab. When you create a demodulator object with
h = modem.pammod('M',2,'InputType', 'Bit','SymbolOrder','Gray');
the signal constellation should be real-valued. If you look at h.constellation you see no imaginary part, but isreal(h.constellation) gives back a zero, which means the constellation points do have a imaginary part. For me it was a little bit annoying, because I cannot use mxIsComplex to determine whether a signal constellation is complex or real-valued. Do you have any clever suggestions for a workaround.
best regards, Bernhard
댓글 수: 0
채택된 답변
Bernhard Schmidt
2011년 2월 10일
댓글 수: 2
Walter Roberson
2011년 2월 10일
When Matlab does a plain assignment, it just creates a new variable header pointing to the old information. But when you do any arithmetic operation on a complex array, Matlab checks for the case of all-zero complex part and drops the complex part in that case. Adding 0 preserves any complex part that is really there, but triggers the check on the complex part.
Interestingly, double(h.constellation) does *not* trigger the check for all-zero complex part.
추가 답변 (1개)
Walter Roberson
2011년 2월 9일
isreal(h.constellation + 0)
I don't know a fast way to do that at the mex level though.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!