Matlab中求序列的极值
2017-11-16 21:54
429 查看
我们知道,在Matlab中有专门求序列最大值和最小值的函数,分别是Max 和 Min,但是有时候我们不满足于求整个序列的最值,而是对序列的极值,也就是局部的最值感兴趣。对于解析函 数,这个比较简单,只要令一阶倒数为零求出对应的自变量就行了。
然而对于离散的序列,这种方法显然不可行,一个比较费劲或者说比较笨的方法就是手工查找,仔细考察序 列的每一个值,用手工的方法将极值逐一挑出来。然而对于比较长的序列,这种方法显然不可行。我们期望有一个自动判断序列中某个点是极值点的函数,把这个艰 巨的任务交给Matlab,让Matlab帮我们去找,这样可以 节省我们宝贵的时间,把更多的时间放在更有意义的事情上面。
假设我们有一个长度为N的序列v(N,1),下面就是Matlab中实现求v的极值点的命令,其中用到了逻辑数组下标的方法:
N = 100;
v = rand (N,1);
t = 0:length(v)-1;
Lmax = diff(sign(diff(v)))== -2; % logic vector for the local max value
Lmin = diff(sign(diff(v)))== 2; % logic vector for the local min value
% match the logic vector to the original vecor to have the same length
Lmax = [false; Lmax; false];
Lmin = [false; Lmin; false];
tmax = t (Lmax); % locations of the local max elements
tmin = t (Lmin); % locations of the local min elements
vmax = v (Lmax); % values of the local max elements
vmin = v (Lmin); % values of the local min elements
% plot them on a figure
plot(t,v);
xlabel('t'); ylabel('v');
hold on;
plot(tmax, vmax, 'r+');
plot(tmin,vmin, 'g+');
hold off;
然而对于离散的序列,这种方法显然不可行,一个比较费劲或者说比较笨的方法就是手工查找,仔细考察序 列的每一个值,用手工的方法将极值逐一挑出来。然而对于比较长的序列,这种方法显然不可行。我们期望有一个自动判断序列中某个点是极值点的函数,把这个艰 巨的任务交给Matlab,让Matlab帮我们去找,这样可以 节省我们宝贵的时间,把更多的时间放在更有意义的事情上面。
假设我们有一个长度为N的序列v(N,1),下面就是Matlab中实现求v的极值点的命令,其中用到了逻辑数组下标的方法:
N = 100;
v = rand (N,1);
t = 0:length(v)-1;
Lmax = diff(sign(diff(v)))== -2; % logic vector for the local max value
Lmin = diff(sign(diff(v)))== 2; % logic vector for the local min value
% match the logic vector to the original vecor to have the same length
Lmax = [false; Lmax; false];
Lmin = [false; Lmin; false];
tmax = t (Lmax); % locations of the local max elements
tmin = t (Lmin); % locations of the local min elements
vmax = v (Lmax); % values of the local max elements
vmin = v (Lmin); % values of the local min elements
% plot them on a figure
plot(t,v);
xlabel('t'); ylabel('v');
hold on;
plot(tmax, vmax, 'r+');
plot(tmin,vmin, 'g+');
hold off;
相关文章推荐
- Matlab求一个序列的极值
- matlab求极值的函数
- 时间序列分析的matlab统计量函数1
- Matlab 产生白噪声和有色噪声序列
- matlab产生符合某个分布的随机数序列
- Matlab--函数极值最值零点
- matlab对时间序列进行频谱分析时,频率轴的确定方法
- [Matlab] M序列的生成,自相关和谱密度
- MATLAB对tiff格式图像序列的读取与导出
- Matlab信号提取、频谱分析、滤波、阈值设定、寻找极值点
- 徐海蛟:MatLab一维数组求解局部极值
- matlab求极值的函数
- matlab 两个序列的相关系数
- 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用
- matlab在时间序列分析中的应用
- Hessian矩阵判定极值之MATLAB实现符号解
- 高斯分布序列matlab
- 利用MATLAB计算三维坐标序列距离误差程序
- 将提取出的yuv三个分量序列合并成一个完整的彩色yuv序列(matlab实现)
- LSTM 时间序列预测 matlab