Using NaN in if and interp1 commands

1 vue (au cours des 30 derniers jours)
Volkan Yangin
Volkan Yangin le 25 Mar 2017
Commenté : Volkan Yangin le 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 commentaires
per isakson
per isakson le 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 le 25 Mar 2017
Thank you per isakson. I am using the command you sent which includes isnan.

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 25 Mar 2017
Modifié(e) : Jan le 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 commentaire
Volkan Yangin
Volkan Yangin le 25 Mar 2017
Modifié(e) : Volkan Yangin le 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by