a=[2 3 6 7 2 1 0.01 6 8 10 12 15 18 9 6 5 4 2].
这是一个数组,我需要从递增和递减趋势开始的地方提取精确的值。
数组
a
的输出将[2(first element) 2 6 9]
a=[2 3 6 7 2 1 0.01 6 8 10 12 15 18 9 6 5 4 2].
^ ^ ^ ^
| | | |
请帮助我在MATLAB中获得任何类似类型数组的结果。。
最佳答案
这是使用diff
功能的好地方。
您的第一步是执行以下操作:B = [0 diff(a)]
我们加0的原因是,由于diff
函数的工作方式,矩阵的长度保持不变它将从矩阵中的第一个元素开始,然后报告该元素与下一个元素之间的差异在第一个元素之前没有前导元素,所以只是将矩阵截断一个元素我们加一个零,因为它是起始元素,所以没有变化。
如果你看一下B
中的结果,你会发现拐点在哪里(从正数到负数)。
要想用编程的方式解决这个问题,你可以做很多事情我倾向于使用一些乘法和find
命令。Result = find(B(1:end-1).*B(2:end)<0)
这将返回在拐点处的索引在这种情况下,它将是:
ans =
4 7 13