具有最低实部的数的索引,复数

Index of the number with the lowest real part, of a complex number

我对一些我很少使用的复数有疑问。 我的问题是我有一个由
制作的数组 cos^(-1)(x) 其中 x 可以是小于或大于 |1| 的值,从而得到一些复数,我需要具有最低实部的数字的索引。

数据可能看起来像

[0 + 0.37i, 0 + 0.18i,  0.2 + 0.0i, 0.3 + 0.0i, 0.4 + 0.0i]

所以我需要0.2 + 0.0i

的索引

目前我试过的是

[val_min_x,idx_min_x]=min(real(x)>0))

因为我需要大于零的实部的最小值。 但这行不通,我猜是因为 real(x>0) 给出了 true 或 false。然后取其中的最小值给出第一个零的索引。

有什么建议可以在没有 if 语句的情况下解决这个问题吗?

先把所有的0都变成1,这样min()就找不到了(加1)。然后保持其他一切不变(通过添加 0)。为简洁起见,布尔技巧会将所有内容保持在一行中,

感谢@CG

% example input
A=[0 + 0.37i, 0 + 0.18i, 0.2 + 0.0i, 0.3 + 0.0i, 0.4 + 0.0i]
% leveraging maximum cos(x)<=1 and boolean true being cast to 1
[~, idx] = min(real(A)+(real(A)==0))


A =

  Columns 1 through 3

   0.0000 + 0.3700i   0.0000 + 0.1800i   0.2000 + 0.0000i

  Columns 4 through 5

   0.3000 + 0.0000i   0.4000 + 0.0000i


idx =

     3