MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Skirt Zhang
on 16 Jan 2013

Dear All,

I have a matrix A as below: A =

1.1093 -0.7697 1.1006 -0.6156 0.4882 -0.8045 0.1049 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -1.2141 1.1174 -1.4916 0.8886 1.4193 -0.2437 -0.6669 -1.1135 -1.0891 -0.7423 -0.7648 0.2916 0.2157 0.1873 -0.0068 NaN -1.0616 -1.4023 0.1978 -1.1658 -0.0825 1.5326 0.5525 NaN -1.4224 1.5877 -1.1480 NaN

I want to replace the NaN with the values generated from interpolation which can take care of both the interpolation for rows and column. So far I have in mind is take interpolation for row get value a_row; then do it for column get a_column. In the end replace nan with the mean value for the two. Can anyone help me about this? Also, I have problems with specifying y for the function : output(a)= interp1(A,y,'linear');

if I don't know y how should I specify here?

thanks a lot in advance

*No products are associated with this question.*

Answer by Andrei Bobrov
on 16 Jan 2013

Edited by Andrei Bobrov
on 16 Jan 2013

one way

t = ~isnan(A); [x,y] = find(t); F = TriScatteredInterp(x,y,A(t)); [ii,jj] = ndgrid(1:size(A,1),1:size(A,2)); out = F(ii,jj);

ADD variant

out(end) = mean(cellfun(@(x)interp1(1:2,x(1:2),3,'linear','extrap'),... {out(end,end-[2 1 0])', out(end-[2 1 0],end),... out(end - (size(out,1)+1)*(2:-1:0))'}));

Skirt Zhang
on 16 Jan 2013

Hi Bobrov, thanks for your reply. But now I still have NaNs in the output which are located in the end of the matrix. Do you have any idea to solve this problem

## 0 Comments