Replace NaN values with a formula

조회 수: 6 (최근 30일)
Caleb
Caleb 2014년 1월 15일
댓글: Caleb 2014년 1월 15일
%I am looking to replace NaN values in a given matrix using a formula.
%Suppose that row 1 of matrix A are totals (See column 3).
%Row 2-4 are subsectors that when summed equal the total.
A = [1100 1200 1125 1635 1850; 45 22 NaN 35 51; NaN NaN 510 600 782; 732 522 534 1000 NaN]
%Another matrix C corresponds to a particular row's average percentage of the total.
C =
0.0281 0.4143 0.5633
%I want to replace each NaN value by multiplying the Total by the coresponding average for that row.
%ie. The NaN value that occurs at A(3,1) would be replaced by .4143*1100=414.3
%any help would be appreciated.

채택된 답변

Bruno Pop-Stefanov
Bruno Pop-Stefanov 2014년 1월 15일
Hi Caleb,
You can use the function isnan to check if an element of A is not a number. In your case, I would go through every element of A, check if it is NaN and replace it with your formula using C. This can be done with a simple for loop as follows:
for row=2:size(A,1)
for col=1:size(A,2)
if isnan(A(row,col))
A(row,col) = A(1,col) * C(row-1);
end
end
end
I hope that helps!
-Bruno
  댓글 수: 1
Caleb
Caleb 2014년 1월 15일
Bruno,
Thank you so much for your help. It worked perfectly!
Caleb

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

추가 답변 (0개)

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by