matlab里答案出现NaN是啥情况
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab里答案出现NaN是啥情况相关的知识,希望对你有一定的参考价值。
插值的时候,如果要求插值的点,在原来给出的数据范围外而插值算法又没有选择外插,那么这点就没有值,返回nan 参考技术A 0/0 的情况
无穷/无穷追问
我在解工程问题只是求插入值就出了这个
追答那很可能分母出现了零。
追问全程连分式都没出现……
追答我help出来,你自己看吧。
>> help NaN
NaN Not-a-Number.
NaN is the IEEE arithmetic representation for Not-a-Number.
A NaN is obtained as a result of mathematically undefined
operations like 0.0/0.0 and inf-inf.
NaN('double') is the same as NaN with no inputs.
NaN('single') is the single precision representation of NaN.
NaN(N) is an N-by-N matrix of NaNs.
NaN(M,N) or NaN([M,N]) is an M-by-N matrix of NaNs.
NaN(M,N,P,...) or NaN([M,N,P,...]) is an M-by-N-by-P-by-... array of NaNs.
NaN(..., CLASSNAME) is an array of NaNs of class specified by the
string CLASSNAME. CLASSNAME can be either 'single' or 'double'.
NaN(..., 'like', P) is an array of NaNs with the same data type, sparsity,
and complexity (real or complex) as the single or double precision numeric
variable P.
Note: The size inputs M, N, and P... should be nonnegative integers.
Negative integers are treated as 0.
MATLAB中出现NAN怎么回事
出图像时结果显示很乱
NaN是Not-a-Number的简写,中文译为“非数”,表示计算结果为不定。
关于出现NaN的原因,楼上两位都说是因为分母为0或被除数为0,这是不确切的。比如1/0得到的是Inf而不是NaN。
计算结果出现NaN,一般有这样几种情况:0/0,Inf/Inf,Inf-Inf,Inf*0,这几种情况都会导致结果不确定,所以会得到NaN。
需要说明的是,由于数值计算的浮点数表示范围是有限的,Inf并不是数学上真正意义的无穷大,例如计算组合值C(300,200),可以用nchoosek(300,200)得到正确的结果(当然,由于浮点数的精度问题,并不是精确的结果),但如果直接根据定义计算 300!/200!/100!,就会得到NaN:
>> nchoosek(300,200)Warning: Result may not be exact. Coefficient is greater than 10^15,
and is only good to 15 digits.
(Type "warning off MATLAB:nchoosek:LargeCoefficient" to suppress this warning.)
> In D:\\MATLAB6p5\\toolbox\\matlab\\specfun\\nchoosek.m at line 50
ans =
4.1583e+081
>> factorial(300)/factorial(200)/factorial(100)
ans =
NaN
就题主贴出的图而言,看不出和NaN有什么关系。NaN通常在绘图中被用于表示不显示的部分,例如,把一条曲线中间去掉一些点,使之视觉上成为多条线段。而题主所贴的曲线看不出有断开的部分。至于说曲线看起来乱,那要看相应的数据是怎样计算出来的,如果题主不给出代码,别人是无法判断的。
参考技术A在matlab中的NaN的含义是没有意义的数,not a number,一般有这几种情况:0/0,Inf/Inf,Inf-Inf,Inf*0等,都会导致结果不确定,所以会得到NaN。
数据处理时,在实际工程中经常数据的缺失或者不完整,此时我们可以将那些缺失设置为nan,Matlab处理缺失的数据时就会跳过或者其他处理——这个是Matlab优越于其他语言的表现之一。另外但读取数据时,某个字符不是数据,那么Matlab自动将它认为nan处理。
拓展说明:
Matlab中提供的nanmean, nanmax, nanmin, nanstd, nansum, nanvar这么多函数可以处理包含nan的数据。
参考技术B 计算错误,非数字追问什么情况下会出现这种情况
什么情况下会出现这种情况
追答这是看你的算法了,分母为零的可能性最大
参考技术C NAN 有可能出现被除数是 0 的情况。以上是关于matlab里答案出现NaN是啥情况的主要内容,如果未能解决你的问题,请参考以下文章