Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Matlab在计算数组时错误地返回0,而在计算标量时正确地返回NaN?_Matlab_Nan - Fatal编程技术网

为什么Matlab在计算数组时错误地返回0,而在计算标量时正确地返回NaN?

为什么Matlab在计算数组时错误地返回0,而在计算标量时正确地返回NaN?,matlab,nan,Matlab,Nan,为什么下面的h(θ)表达式有时返回0,有时返回NaNh(θ)包含一个被零除的θ=0,并且应该总是返回NaN。如果我只要求h(0),一切都很好 但是,当它计算包含在多元素数组中的零时,当它应该返回NaN时,它将返回h=0。但是,如果专门计算零元素,那么它将返回它应该返回的NaN >> theta = [0 1] theta = 0 1 第一个元素应该是NaN: >> h = tan(theta)/(1+(tan(theta)/tan(2.*theta))

为什么下面的
h(θ)
表达式有时返回
0
,有时返回
NaN
h(θ)
包含一个被零除的θ=0,并且应该总是返回
NaN
。如果我只要求
h(0)
,一切都很好

但是,当它计算包含在多元素数组中的零时,当它应该返回
NaN
时,它将返回
h=0
。但是,如果专门计算零元素,那么它将返回它应该返回的
NaN

>> theta = [0 1]
theta =
     0     1
第一个元素应该是
NaN

>> h = tan(theta)/(1+(tan(theta)/tan(2.*theta)))
h =
     0    5.4220 
具体评估零元素时,其工作正常:

>> h = tan(theta(1))/(1+(tan(theta(1))/tan(2.*theta(1))))
h =
     NaN 

>> h = tan(theta(2))/(1+(tan(theta(2))/tan(2.*theta(2))))
h =
     5.4220

您需要使用
/
而不是
/
进行元素级除法以获得所需的结果。这被称为右数组划分


您可以将
>
放在输入行中进行格式化,以提高可读性。请将此文件归档在“MATLAB所做的另一件事与其他语言所做的事情相反,也与正常预期相反”
>> h = tan(theta)./(1+(tan(theta)./tan(2.*theta)))
h =
       NaN    5.4220