MATLAB에서 행렬이 주어 졌을 때 요소에 무한 값이 있으면 해당 행의 모든 요소를 NaN과 같게 만들고 싶습니다. 예를 들면 :
입력:
A=[1 2 NaN
4 5 6
7 NaN 9
0 1 2
3 4 5
6 7 8
Inf 0 1
2 3 4
5 6 7
8 NaN 0];
산출:
B=[NaN NaN NaN
4 5 6
NaN NaN NaN
0 1 2
3 4 5
6 7 8
NaN NaN NaN
2 3 4
5 6 7
NaN NaN NaN];
어떻게 할 수 있습니까?
이것이 내가 아는 방법입니다.
idx_NaNinf = find((isnan(A)|isinf(A)) );
[idx_row,idx_col] = ind2sub(size(A),idx_NaNinf);
모든 행 번호가 idx_row에 저장되고 for 루프를 사용하여 해당 행의 요소를 NaN과 같게 만들 수 있습니다. 그러나 더 효율적인 방법이 있습니까?
이 한 줄짜리를 사용할 수 있습니다.
A(any(~isfinite(A), 2), :) = NaN;
~isfinite(A)
요소 A
가 무한 또는 인 경우 true를 반환합니다 NaN
. any(..., 2)
이러한 요소가있는 모든 행을 찾고 논리적 인덱싱은 해당 행의 값을로 설정하는 데 도움이됩니다 NaN
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다