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

MATLAB函数matrix_find_k编写:获取矩阵指定值的位置索引

解决MATLAB函数matrix_find_k的收尾问题

嘿,你已经迈出了关键的第一步——用m == k生成标记目标位置的逻辑矩阵,接下来只需要用MATLAB自带的find函数就能轻松获取所有1的位置,然后整理成要求的行向量就行啦!

完整实现代码

function rvector = matrix_find_k(m, k)
    % 生成逻辑矩阵,标记矩阵中等于k的元素位置
    logical_mat = m == k;
    % 获取所有目标元素的行、列下标
    [row_indices, col_indices] = find(logical_mat);
    % 将行、列下标拼接成连续的行向量
    rvector = [row_indices(:)'; col_indices(:)'];
end

代码逐行解释

  • 第一步:logical_mat = m == k
    这就是你已经写好的部分,把原矩阵转换成布尔矩阵,所有等于k的位置会被标记为true(也就是数值1),其余为false(数值0)。
  • 第二步:[row_indices, col_indices] = find(logical_mat)
    find函数专门用来定位矩阵中非零元素的位置,当传入布尔矩阵时,它会返回所有true元素的行索引和列索引,分别存储在row_indices和col_indices两个列向量里。
  • 第三步:rvector = [row_indices(:)'; col_indices(:)']
    先用(:)把列向量转成一维数组,再用'转置成行向量,最后把行索引和列索引拼接起来,就得到了[i1 j1 i2 j2 ... in jn]格式的结果行向量。如果矩阵里没有k,find会返回空向量,拼接后自然也是空向量,完全符合需求。

测试示例

比如我们用这个矩阵测试:

test_matrix = [1 5 3; 5 2 5; 4 7 5];
result = matrix_find_k(test_matrix, 5);

运行后result会是[1 2 2 1 2 3 3 3],对应所有5的位置:(1,2)、(2,1)、(2,3)、(3,3)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:33:12