在Matlab中返回索引的函数

时间:2015-03-25 15:27:23

标签: arrays matlab matrix

如何在Matlab中编写一个函数,该函数采用每列中具有单个1值的矩阵并返回此索引。

例: 如果输入为x = [0 0 1; 1 0 0; 0 1 0],则返回索引= [2 3 1]

3 个答案:

答案 0 :(得分:5)

find确实是要走的路

[indices,~] = find(x);

如果您想以隐秘方式执行此操作,或出于某种原因讨厌find,您还可以使用cumsum

indices = 4 - sum(cumsum(x,1),1);

答案 1 :(得分:2)

如果你正在寻找那些的索引,这应该可以解决问题:

[indices,~] = ind2sub(size(x),find(x))

答案 2 :(得分:2)

您还可以使用max的第二个输出:

[~, result] = max(x==1, [], 1);

稍微有点厌恶的方法:

result = nonzeros(bsxfun(@times, x==1, (1:size(x,1)).'));