How to Normalize a matrix between 0-1 containing NaNs?
조회 수: 3 (최근 30일)
이전 댓글 표시
Can anyone help me please to normalize a matrix between 0-1 which contains NaNs?
the following makes whole the matrix zero
d = A - min (A(:));
nrmdata = d./max(d(:));
댓글 수: 2
Walter Roberson
2016년 9월 5일
I do not seem to be able to reproduce the problem. Could you attach a .mat with your A values?
답변 (3개)
KSSV
2016년 9월 5일
편집: KSSV
2016년 9월 5일
clc; clear all ;
load A.mat ;
idx = isinf(A) ; % get the positions of inf in A
B = A ; % B as A
B(idx) = 0 ; % repalce inf's in B with 0
% normalize the B matrix
norm_A = (B - min(B(:))) / ( max(B(:)) - min(B(:)) ) ;
norm_A(idx) = inf ; % replace norm_A with inf in previous locations/ if required
or
clc; clear all ;
load A.mat ;
m0 = min(A(isfinite(A(:)))); % get minimum in A
m1 = max(A(isfinite(A(:)))); % get maximum in A
norm_A = (A -m0)/(m1-m0 ) ;
댓글 수: 0
Walter Roberson
2016년 9월 5일
You cannot normalize data that contains infinity, not unless you are willing to ignore the infinity.
By definition, any finite real value is a negligible fraction of infinity, so when you normalize against infinity, all finite values become 0.
댓글 수: 0
Stephen23
2016년 9월 5일
Ignoring infinity:
S = load('A.mat');
A = S.A;
idx = isfinite(A);
Amax = max(A(idx));
Amin = min(A(idx));
B = (A-Amin) / (Amax-Amin);
and checking:
>> min(B(isfinite(B)))
ans = 0
>> max(B(isfinite(B)))
ans = 1
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!