计算在matlab中矢量化的矩阵中的行峰

时间:2016-11-01 21:22:56

标签: matlab vectorization

我在矩阵中有一系列行向量。我想计算每一行的峰值并将它们分配给一个新的数组。

例如:

A = [1,3,4,2,1,3,1;5,6,7,6,7,6,5]
[peaks, inds] = myfunc(A)

peaks =

 4     3
 7     7


inds =

 3     6
 3     5

使用for循环很容易,只需要

[peaks(i,:), inds(i,:)] = findpeaks(A(i,:))

并迭代我。我想知道它是否可以以矢量化方式进行。它不应该在内存中或类似的东西中复制很多东西,只是一行一行地干净地计算。

我尝试的事情:

indices = 1:size(A,1);
[peaks(indices,:), inds(indices,:)] = findpeaks(A(indices,:))
Error using findpeaks
Expected X to be a vector.

Error in findpeaks>parse_inputs (line 90)
validateattributes(Xin,{'numeric'},{'nonempty','real','vector'},...

Error in findpeaks (line 71)
[X,Ph,Pd,Th,Np,Str,infIdx] = parse_inputs(Xin,varargin{:});

0 个答案:

没有答案