0
点赞
收藏
分享

微信扫一扫

MATLAB小技巧(11)一维数组极大值查找

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);%随机产生一个110行的数组,也可以生成其他维数,根据题主需要
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小知识,大家一起来学习进步阿!

举报

相关推荐

0 条评论