You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取反余弦生成的复数数组中实部最小且大于0的元素索引

实现方案(Matlab环境)

你的猜测是对的:real(x)>0返回的是布尔数组,对布尔值取min只会得到第一个逻辑假(即实部<=0)的位置,完全不符合需求。

无需if语句的实现有两种常用写法:

写法1:逻辑索引替换(可读性更高)

% 提取所有元素的实部
real_arr = real(x);
% 将实部小于等于0的位置赋值为无穷大,避免被最小值计算选中
real_arr(real_arr <= 0) = Inf;
% 取最小值对应的索引,~表示忽略返回的最小值本身
[~, idx_min_x] = min(real_arr);

针对你的示例数组,运行后idx_min_x结果为3,对应0.2 + 0.0i的位置,符合预期。

写法2:一行式实现

[~, idx_min_x] = min(real(x) + (real(x) <= 0)*Inf);

原理是给所有实部<=0的元素叠加一个无穷大值,让这些位置在最小值计算时自动被排除,逻辑和写法1完全一致。


内容的提问来源于stack exchange,提问作者Peter Panduro Jørgensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:24:03