关于矩阵操作的问题

vie*_*iew 5 arrays algorithm indexing matlab matrix

给定1*N矩阵或数组,如何找到具有相同值的前4个元素,然后存储这些元素的索引?

PS:我只是好奇.如果我们想找到价值差异在一定范围内的前4个元素,比如低于2,该怎么办?例如,M = [10,15,14.5,9,15.1,8.5,15.5,9.5],我要找的元素是15,14.5,15.1,15.5,指数是2,3,5, 7.

Cle*_* J. 7

如果你想在Matlab的数组'tab'中出现第一个值4次,你可以使用

num_min = 4
val=NaN;
for i = tab
    if sum(tab==i) >= num_min
        val = i;
        break
    end
end
ind = find(tab==val, num_min);
Run Code Online (Sandbox Code Playgroud)

通过实例

tab = [2 4 4 5 4 6 4 5 5 4 6 9 5 5]
Run Code Online (Sandbox Code Playgroud)

你得到

val =
     4
ind =
     2     3     5     7
Run Code Online (Sandbox Code Playgroud)

  • 你应该将`sum`语句写成:`if sum(tab == i)> = num_min`.目前它总结了值,所以如果数组的第一个元素是9,它只出现一次,它将被选中. (2认同)
  • 此外,您应该在开始循环之前将`val`设置为'NaN` - 如果没有重复至少4次的值,则在最后一行中会出现错误,因为不会定义`val`. (2认同)