MATLAB函数查找一维数组A中的所有极大值

编写一个MATLAB函数,查找输入一维数组A的所有极大值(三种极大值:第一个数大于后一个数,中间数大于前后的数,最后一个数大于前一个数),将查找到的所有极大值的位置和数保存到输出数组B中。允许使用多种方法实现,但至少有一种方法必须使用while循环和if语句。


function B=func(A)
if length(A)<2;
B=A;
else
B=[];
i=2;
if A(2)>A(1)
B(end+1)=A(2);
end
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

楼上说的对!

帮一楼的同学完善一下,一楼多输出了一个数,问题不大,分数可以都留给一楼

 %% 极大值查找示例
% 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

img

img