-5

在 Matlab 中,我有以下矩阵:

A = [0,0,0,0,0,0,0,0,0,0,8,32,52,36,12,0,1,2,0,0,0,0,0,0,0,0,0,1,2,1,163,60,
21,31,34,35,38,38,40,38,38,40,34,37,39,34,32,32,33,31,39,40,37,36,24,39,162,
23,23,22,22,29,25,23,24,25,24,24,29,23,26,27,24,20,27,25,27,26,24,23,21,24,
162,20,24,29,30,28,25,31,28,30,32,35,29,31,32,30,29,30,30,31,31,30,30,29,25,
20,162,63,18,22,23,21,22,23,24,21,22,24,21,24,22,24,19,18,21,19,18,20,20,18,
20,13,162,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

我的命令是:

max_locations = find(A==max(A))

它返回 31,这是第 31 个元素(163)的索引,它是列表中的最大值。

我正在寻找的答案是 max_locations = [31 57 83 109 135],即 PEAKS。

为什么它没有把所有的峰都还给我,我该怎么做?

4

1 回答 1

2

因为其他位置的值不是最大值:162 而不是 163。

>> L([31 57 83 109 135])
ans =
   163   162   162   162   162

如果您想找到一些极端的选择,您可以尝试;

>> pick_location = find(L>160)
pick_location =
    31    57    83   109   135   136

要真正找到峰值,请尝试从FileExchange提交 PEAKFINDER。

于 2013-03-25T19:52:56.940 回答