Make very small numbers in complex matrix zero

조회 수: 4 (최근 30일)
Math Works
Math Works 2021년 10월 5일
댓글: Math Works 2021년 10월 6일
format shortG
a11 = 0;
a12 = exp(-j*0.5*pi);
a21 = exp(-j*0.5*pi);
a22 = 0;
S = [a11, a12; a21, a22]
S =
0 + 0i 6.1232e-17 - 1i 6.1232e-17 - 1i 0 + 0i
A = ((1+a11)*(1-a22)+a12*a21)/(2*a21);
B = ((1+a11)*(1+a22)-a12*a21)/(2*a21);
C = ((1-a11)*(1-a22)-a12*a21)/(2*a21);
D = ((1-a11)*(1+a22)+a12*a21)/(2*a21);
X = [A, B; C, D]
X =
6.1232e-17 - 3.7494e-33i 0 + 1i 0 + 1i 6.1232e-17 - 3.7494e-33i
X_cleanup = X;
X_cleanup(abs(X_cleanup)<0.0001) = 0
X_cleanup =
0 + 0i 0 + 1i 0 + 1i 0 + 0i
Is there a way to automatically ask matlab to output matrix like what's in the X_cleanup instead of X?
Is there anyting under 'format'?
  댓글 수: 2
Mathieu NOE
Mathieu NOE 2021년 10월 5일
hi
why not simply make the clean up a function that you can call anytime ?
Math Works
Math Works 2021년 10월 5일
It's just a bit annoying having to do that.

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

답변 (1개)

Matt J
Matt J 2021년 10월 5일
편집: Matt J 2021년 10월 5일
Is there a way to automatically ask matlab to output matrix like what's in the X_cleanup instead of X?
No, but note that if you expect your input data to be integer-valued, you can avoid the issue by generating them in integer form directly:
format shortG
a11 = 0;
a12 = -1i;
a21 = -1i;
a22 = 0;
S = [a11, a12; a21, a22]
S =
0 + 0i 0 - 1i 0 - 1i 0 + 0i
A = ((1+a11)*(1-a22)+a12*a21)/(2*a21);
B = ((1+a11)*(1+a22)-a12*a21)/(2*a21);
C = ((1-a11)*(1-a22)-a12*a21)/(2*a21);
D = ((1-a11)*(1+a22)+a12*a21)/(2*a21);
X = [A, B; C, D]
X =
0 + 0i 0 + 1i 0 + 1i 0 + 0i
  댓글 수: 5
Matt J
Matt J 2021년 10월 5일
Well like I said, you can't make Matlab truncate results to zero on autopilot.
I think you would regret it even if it were implementable. In the situation you describe, Matlab would have no way of knowing if a computation was the final one or just an intermediate step in a future computation you are planning, so basically truncation would occur at every step in your computational pipeline and accumulate unpredictably.
Math Works
Math Works 2021년 10월 6일
Okay, that's a good point.

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

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by