MATLAB找出一维变量中的局部极大值和局部极小值,并进行运算
如题,目前已有一维变量,需要在一维变量中找出所有的局部极大值和局部极小值,对相应的局部极大值点和局部极小值点进行运算:
并将运算结果返回到局部极大值点和局部极小值点对应的位置。
以此完成对整个一维数组的遍历输出结果。
MATLAB找出一维变量中的局部极大值和局部极小值,并进行运算
如题,目前已有一维变量,需要在一维变量中找出所有的局部极大值和局部极小值,对相应的局部极大值点和局部极小值点进行运算:
并将运算结果返回到局部极大值点和局部极小值点对应的位置。
以此完成对整个一维数组的遍历输出结果。
这个思路应该挺容易理解,输入一个一维数组 y,遍历整个数组,寻找局部极大值点和局部极小值点,然后存入 Max和 Min 数组中。最后,对 Max和 Min 数组中的数按照题目要求进行计算,并返回结果。
y = input('请输入一位数组: ');
% 定义局部极大值点数组
MAX = [];
% 定义局部极小值点数组
Min = [];
% 遍历整个一维数组
for i = 2:length(y)-1
if y(i) > y(i-1) && y(i) > y(i+1)
Max = [Max, i];
end
if y(i) < y(i-1) && y(i) < y(i+1)
Min = [Min, i];
end
end
% 计算并返回结果
for i = 1:length(Max)
y(Max(i)) = sqrt(y(Max(i)) * y(Max(i) - 1));
end
for i = 1:length(Min)
y(Min(i)) = sqrt(y(Min(i)) * y(Min(i) - 1));
end
disp(y)