我正在使用min
函数查找Complex Double
数组中的最小值,并将返回值设置为slider Min
属性。
当用户更改滑块值时,查找小于滑块值的值
但是min
和lt
运算符会返回不同的结果
例如,看下面的代码。
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
答案 0 :(得分:4)
根据MATLAB文档:
当X很复杂时,使用幅度计算最小值 分(ABS(X))。在相等幅度元素的情况下,然后是相位 使用角度min(ANGLE(X))。
仅比较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
这可能是更直观的结果。