Using NaN in if and interp1 commands

1 Ansicht (letzte 30 Tage)
Volkan Yangin
Volkan Yangin am 25 Mär. 2017
Kommentiert: Volkan Yangin am 25 Mär. 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 Kommentare
per isakson
per isakson am 25 Mär. 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 am 25 Mär. 2017
Thank you per isakson. I am using the command you sent which includes isnan.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 25 Mär. 2017
Bearbeitet: Jan am 25 Mär. 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 Kommentar
Volkan Yangin
Volkan Yangin am 25 Mär. 2017
Bearbeitet: Volkan Yangin am 25 Mär. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by