具有最低实部的数的索引,复数
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
我对一些我很少使用的复数有疑问。
我的问题是我有一个由
制作的数组
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