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

Matlab中提取A、B向量满足差值属于C的元素对的高效实现方法

Matlab高效构造满足条件的元素对矩阵实现

核心实现代码

因为需要多次重复调用,直接封装为函数即可:

function D = find_valid_pairs(A,B,C)
    % 过滤A、B中的正负无穷,仅保留有限值
    A_valid = A(isfinite(A));
    B_valid = B(isfinite(B));
    % 提前过滤C中的非有限值:有限值的差值不可能为无穷,直接排除减少计算量
    C_valid = C(isfinite(C));
    % 向量化计算所有a-b的组合矩阵
    diff_mat = A_valid.' - B_valid;
    % 匹配差值属于C_valid的位置,获取对应的行、列索引
    [row_idx, col_idx] = find(ismember(diff_mat, C_valid));
    % 按行拼接符合条件的(a,b)对,得到结果矩阵
    D = [A_valid(row_idx), B_valid(col_idx)];
end

测试示例

输入样例数据:

A=[-3 3 0 Inf -Inf];
B=[-2 2 0 Inf -Inf];
C=[Inf -Inf -1 1 0];
D = find_valid_pairs(A,B,C)

输出结果和参考完全一致:

D =
    -3    -2
     3     2
     0     0

性能说明

  • 全程使用Matlab优化过的内置向量化操作,无显式嵌套循环,多次调用的运行效率远高于循环实现
  • 提前过滤所有无效无穷值,大幅降低后续差值计算、匹配的运算量
  • 若数据规模极大(单向量长度超过1e4,差值矩阵内存占用超过可用内存),可以改用基于containers.Map的哈希匹配方案,普通场景下上述实现为最优选择。

内容的提问来源于stack exchange,提问作者Star

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:48:04