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

如何检查指定值对是否存在于Matlab二维数组中?

解决Matlab中行式(x,y)对的存在性判断问题

嘿,这个问题其实很好处理,因为你的数组b本身就把每个(x,y)对作为独立一行存储了,刚好可以直接用Matlab的ismember函数来实现严格的行匹配判断。

核心解决方案

要判断目标值对(比如[3,7]或[7,3])是否存在于b中,且严格保持x在前、y在后的顺序,你可以这样写:

% 定义你的目标值对
target = [3 7]; % 或者 target = [7 3];
% 判断是否存在
isPresent = any(ismember(b, target, 'rows'));

为什么这样有效?

  • ismember(b, target, 'rows')会逐行对比b和target:只有当b中的某一行和target的元素顺序完全一致、数值完全匹配时,才会在对应位置返回true,否则返回false。
  • any()函数会检查这个逻辑结果数组里是否有至少一个true,也就是确认是否存在符合要求的(x,y)对。

示例验证

对于你的数组b=[1 5; 2 6; 3 7; 4 8]:

  • 当target = [3 7]时,ismember(b, [3 7], 'rows')会返回[false; false; true; false],any()之后得到true,符合预期;
  • 当target = [7 3]时,ismember(b, [7 3], 'rows')会返回全false的数组,any()之后得到false,正好满足你的需求。

和数组a的处理对比

之前处理数组a时需要转置a.',是因为a的结构是第一行存所有x、第二行存所有y,转置后才变成每行一个(x,y)对;而b本身就是每行一个(x,y)对,所以直接用ismember的'rows'参数就可以,不需要额外转置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:38