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

MatLab矩阵索引处理:如何获取每行首个0的对应列号并存储

实现方案(MATLAB环境)

你不需要基于赋值后的minimum_value_1000矩阵计算,直接用之前生成的逻辑矩阵minimum_value_logic计算效率更高:逻辑矩阵中值为1的位置就是原矩阵被置为0的位置,直接找每行第一个1的索引即可。

方法1:循环实现(兼容性最优,所有MATLAB版本都支持)

% 初始化结果数组,默认填充NaN,代表该行无值为0的元素
row_first_zero_col = NaN(size(minimum_value_1000, 1), 1);
% 遍历每一行
for i = 1:size(minimum_value_logic, 1)
    % 取当前行第一个逻辑值为1的位置,即第一个被置0的元素列号
    col_idx = find(minimum_value_logic(i, :), 1, 'first');
    if ~isempty(col_idx)
        row_first_zero_col(i) = col_idx;
    end
end
  • 变量row_first_zero_col就是最终存储结果,长度和矩阵行数一致,对应每行第一个0的列号,无0的行对应值为NaN,你可以根据需求修改无0行的默认填充值。

方法2:向量化实现(效率更高,适合大尺寸矩阵)

% 对逻辑矩阵按行做累积和,累积和第一次等于1的位置就是该行第一个为1的元素
cum_sum = cumsum(minimum_value_logic, 2);
% 提取所有行第一次出现累积和为1的行列索引
[rows, cols] = find(cum_sum == 1, size(cum_sum,1), 'first');
% 赋值到结果数组,无0的行自动保留NaN
row_first_zero_col = NaN(size(minimum_value_1000,1),1);
row_first_zero_col(rows) = cols;
  • 该方法避免了显式循环,处理万行以上的大矩阵时速度优势非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:00:03