Matlab min函数和'lt'运算符

时间:2015-05-23 19:51:35

标签: matlab

我正在使用min函数查找Complex Double数组中的最小值,并将返回值设置为slider Min属性。
当用户更改滑块值时,查找小于滑块值的值 但是minlt运算符会返回不同的结果 例如,看下面的代码。

array=[-5.61160893699794 + 1.29692613840634i , -0.000211300000000000 - 1.85290000000000e-06i; -1.91125106282203 + 1.60401019880518i,-0.768982324325300 + 0.732360902857864i]
vmin=min(min(array));
res=array(array<vmin);

结果:

vmin= -2.1130e-04 - 1.8529e-06i  
res=  -5.6116 + 1.2969i  
      -1.9113 + 1.6040i
      -0.7690 + 0.7324i

2 个答案:

答案 0 :(得分:4)

根据MATLAB文档:

min

  

当X很复杂时,使用幅度计算最小值       分(ABS(X))。在相等幅度元素的情况下,然后是相位       使用角度min(ANGLE(X))。

lt

  

仅比较A中元素的实部。

您可以重现此行为:

>> 1 < -2i
ans = 0
>> min([1,-2i])
ans = 1

答案 1 :(得分:2)

表达式array < vmin创建逻辑数组:

>> array < vmin
ans =
     1     0
     1     1

其中1表示array的那些元素的实部小于最小值的真实部分。

当您将该逻辑输出用作logical index array(array<vmin)时,输出是array元素的列向量,它们是真的。所以一切都正常运作。

如果array包含在abs中,则生成的逻辑数组将全部为false:

>> abs(array) < vmin
ans =
     0     0
     0     0

这可能是更直观的结果。

我不知道这是否重要,但我会注意到min函数找到复杂entires的最小幅度(绝对值)的值,而lt只测试真实的部分。