我在矩阵中有一系列行向量。我想计算每一行的峰值并将它们分配给一个新的数组。
例如:
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{:});