nab*_*bla 1 matlab matrix-indexing
我之前在MATLAB向量中使用了逻辑索引来处理类似的条件
X = X(X < 6);
Run Code Online (Sandbox Code Playgroud)
然而,现在我想找到使用相同想法的局部极值,但是具有"局部"条件.我会对类似的东西感兴趣
X = X(X(i) > X(i-1) & X(i) > X(i + 1));
Run Code Online (Sandbox Code Playgroud)
我知道这不会在向量的第一个和最后一个元素中起作用,并且有更好的方法可以找到局部极值.
这个问题与前一个问题(从数据中获得FFT峰值)的不同之处在于我对寻找最大值并不特别感兴趣,而是能够使用参考向量中相邻元素的"局部"条件进行逻辑索引.
小智 5
你不能像你描述的那样直接这样做.您将不得不创建其他数据,这些数据本身可以进行逻辑测试,其输出可用于索引向量.在您的情况下,最好的方法是计算近似导数,并找到该导数的向下过零点.
x = rand(1,50);
xDiff = diff(x);
xZeroCross = diff(sign(xDiff));
indexUp = find(xZeroCross>0)+1;
indexDown = find(xZeroCross<0)+1;
figure();
plot(1:50,x,'r',indexDown,x(indexDown),'b*',indexUp,x(indexUp),'go');
Run Code Online (Sandbox Code Playgroud)
此代码生成以下图形,其中local-maxima是蓝色星形,local-minima是绿色圆圈.
