MATLAB小技巧(11)一维数组极大值查找
前言
MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!
在一维数组中查找所有极大值,包括头尾,本文来源是问答中一位同学的提问,具体要求是:编写一个MATLAB函数,查找输入一维数组A的所有极大值(三种极大值:第一个数大于后一个数,中间数大于前后的数,最后一个数大于前一个数),将查找到的所有极大值的位置和数保存到输出数组B中。允许使用多种方法实现,但至少有一种方法必须使用while循环和if语句。
答题中有位同学已经给出来基本的答案,但可能会多输出一个数据,所以自己优化了一下。
一. MATLAB仿真
%% 极大值查找示例
% date:2022-4-27 23:43:02
% author:C.S
clear all;
close all;
clc;
M = -100 + 200*rand(1,10);%随机产生一个1列10行的数组,也可以生成其他维数,根据题主需要
N = func(M);
function B=func(A)
if length(A)<2
B = A;
else
B = [];
i=2;
while i<length(A)-1
if A(i)>A(i-1) && A(i)>A(i+1)
B(end+1) = A(i);
end
i = i + 1;
end
if A(length(A))>A(length(A)-1)
B(end+1) = A(length(A));
end
end
end
二. 仿真结果
三. 小结
极值与最值的查找相对比较简单,但那位一楼答题的同学,在查找输出的时候,多输出了第二位是极值的情况,即第二位为极大值的时候,输出会添加两次,简单笔记一下。每天学一个MATLAB小知识,大家一起来学习进步阿!