필터 지우기
필터 지우기

Return only the real nullspace of a complex matrix

조회 수: 5 (최근 30일)
Martin Seltmann
Martin Seltmann 2018년 10월 24일
댓글: Torsten 2018년 10월 24일
I need to restrict the computation of the nullspace of a complex matrix A to one over the REAL numbers. How do I do that? null(A,’Real’) did not work.
  댓글 수: 2
Torsten
Torsten 2018년 10월 24일
It's not clear what you mean. You want to know if kern(A) contains purely real vectors ?
Martin Seltmann
Martin Seltmann 2018년 10월 24일
Yes, and extract only those.

댓글을 달려면 로그인하십시오.

채택된 답변

Bruno Luong
Bruno Luong 2018년 10월 24일
편집: Bruno Luong 2018년 10월 24일
A = randn(2,5)+1i*randn(2,5);
% N is a real orthonormal basis of null(A)
n = size(A,2);
NR=null([[real(A), imag(A)]; [-imag(A), real(A)]; [zeros(n), eye(n)]]);
N=NR(1:n,:);
% Check
norm(A*N)
  댓글 수: 4
Torsten
Torsten 2018년 10월 24일
If x is real valued and A*x = 0, you have (real(A)+i*imag(A))*x = 0. This implies that real(A)*x = 0 and imag(A)*x=0.
Conversely, if real(A)*x=0 and imag(A)*x=0 for a real vector x, then real(A)*x+i*imag(A)*x = A*x = 0.
Best wishes
Torsten.
Martin Seltmann
Martin Seltmann 2018년 10월 24일
Of course, no clue why I was confused there. Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Bruno Luong
Bruno Luong 2018년 10월 24일
편집: Bruno Luong 2018년 10월 24일
Torsten proposition:
NR = null([real(A);imag(A)]);
Torsten is right, it's actually the same null space, and his formula is much simpler.
Because
real(A)*NR = 0
imag(A)*NR = 0
so
A*NR = (real(A)+1i*imag(A))*NR = real(A)*NR + 1i*(imag(A)*NR) = 0
The opposite is also true.
Since
A*NR = 0 in the complex field
because NR is real, therefore the above is equivalent to
real(A)*NR = 0
and because
A*(1i*NR) = 0
as well, this implies
imag(A)*NR = 0
  댓글 수: 3
Bruno Luong
Bruno Luong 2018년 10월 24일
편집: Bruno Luong 2018년 10월 24일
You should't accept my comment, but Torsten's reply (if he put his code in a separate answer)
Torsten
Torsten 2018년 10월 24일
You were the first who answered ( and your answer is not wrong :-) )
Best wishes
Torsten.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Parallel Computing Fundamentals에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by