Using NaN in if and interp1 commands

1 view (last 30 days)
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 Comments
per isakson
per isakson on 25 Mar 2017
c(g) is a scalar. Why not replace
if interp1(a,b,c(g))==NaN;
by
if isnan( interp1(a,b,c(g)) )
?
Volkan Yangin
Volkan Yangin on 25 Mar 2017
Thank you per isakson. I am using the command you sent which includes isnan.

Sign in to comment.

Accepted Answer

Jan
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.
  1 Comment
Volkan Yangin
Volkan Yangin on 25 Mar 2017
Edited: 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.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!