我有一组18个MATLAB向量(当前值的原始读数)数据,这些数据随着许多最小值和最大值而变化,放入B
的2d矩阵,其大小为18乘16348。
我找到了每个行向量的全局最大值的索引和值。
存储在另一个向量中,即M
(具有B
的每个行向量的最大值)和l(具有B
的每个行向量的最大索引)。使用以下代码。
[M,l]=max(B,[],2)
现在我想找到在此全局最大值之前出现的每个行向量的最小值。
我写了一个循环来向后看,从全局最大值开始并检查最小值及其索引。最小值的条件可以想象为 b [i,l]< b [i,l-1]& b [i,l]< b [i,l + 1]
这个循环如下。
o=l; % l vector has the indices of global max of all 18 vectors%
for i=1:18
while ( B(i,o(i)) > B(i,o(i)-1)) % to locate the minima before globalmax
o(i)=o(i)-1;
end;
if( B(i,o(i) < B(i, o(i)+1))
display(o(i));
display(B(i,o(i)));
break;
end;
end;
由于某种原因,while
循环只执行一次然后停止。这就是我面临的问题。
下图显示了所绘制的18个值中的4个以及标记的矢量的最大值和最小值。