复数中实部最低的数的索引



我对一些复数有问题,我很少处理这些问题。我的问题是,我有一个由
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)给出了真或假。然后取其最小值,得到第一个零的索引。

有什么建议可以在没有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

相关内容

  • 没有找到相关文章