# Using NaN in if and interp1 commands

2 views (last 30 days)
Volkan Yangin on 25 Mar 2017
Commented: Volkan Yangin on 25 Mar 2017
Hi everbody, I have 6 values and some values are NaN. If interp1 command finds the final value as NaN for giving ' c' value, MATLAB must give me error message.
a=[1 2 3 4 5 6];
b=[10 15 20 NaN NaN NaN];
c=[1.5 4 3.5 4.5 5.1 5.9];
for g=1:1:numel(a)
if interp1(a,b,c(g))==NaN;
disp('There is a mistake here')
end
end
But MATLAB does't run this command with NaN values.
*In interp1 at 178
Warning: NaN found in Y, interpolation at undefined values
will result in undefined values.*
How can i achieve this problem? How can i use NaN values in interp1 and if command? I get the problems when i use isnan.
Thanks...
##### 2 CommentsShowHide 1 older comment
Volkan Yangin on 25 Mar 2017
Thank you per isakson. I am using the command you sent which includes isnan.

Jan on 25 Mar 2017
Edited: Jan on 25 Mar 2017
It is tzhe definition of NaN, that any comparison with it is false, even NaN == NaN. Therefore
if interp1(a,b,c(g))==NaN;
will most likely not do, what you expect. I assume you want:
for g = 1:numel(c) % Not numel(a) !??
cg = interp1(a, b, c(g));
if isnan(cg)
disp('There is a mistake here')
end
end
Or without a loop:
cg = interp1(a, b, c);
if any(isnan(cg))
disp('There is a mistake here')
end
I do not get a warning in R2016b.
Volkan Yangin on 25 Mar 2017
Yes, it works on my MATLAB, too, but
Warning: NaN found in Y, interpolation at undefined values will result in undefined values. > In interp1 at 178
warning message is still on my command window.