我对一些复数有问题,我很少处理这些问题。我的问题是,我有一个由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