【发布时间】:2016-06-10 01:16:11
【问题描述】:
考虑下面的例子
A =
6 9 4 7 10
3 6 5 5 9
10 4 9 8 6
10 6 3 4 6
6 3 3 8 6
6 4 4 4 5
5 10 8 5 7
10 10 8 8 7
5 7 8 9 9
3 3 6 3 9
[~,Inx] =max(A, [],2)
Inx =
5
5
1
1
4
1
2
1
4
5
上面的代码返回每列最大数量的索引,就像第一行一样,第五行的最大数量是 10 所以Inx(1) = 5
我们可以为 find 做同样的事情吗?例如,如果我想在每一行中找到一个特定的数字让我们说 8
>> find(A == 8)
ans =
27
28
29
33
35
38
我会得到索引,但不会像我们为max() 得到的那样逐行获取有没有办法做 minipulate find 得到那个?或者其他方式
更新:我知道我们可以使用[row,col,v] = find(___),但有一个问题是它只返回存在值的行
【问题讨论】:
-
你希望它在值不存在的地方返回什么?我有点困惑你到底在追求什么……
-
喜欢它应该返回 0 或者一个 nan 代替它
-
啊哈,所以对于每个行,你想检查是否有一个数字,如果没有它应该返回0?如果你真的想要这个,我建议你考虑一下,如果你尝试使用这些索引,你会得到错误......
-
是的,就像它存在列号一样,否则为 0
-
重塑为向量并使用sub2ind,然后您可以检查是否缺少条目
标签: matlab