用matlab写一个函数查找输入行向量的所有极大点的位置和数值,极大值指大于前一个数且大于后一个数的数,大于第2个数的第1个数和大于倒数第2个数的最后一个数是也是极大值。
时间: 2024-01-27 18:03:01 浏览: 26
可以使用以下函数来实现:
```matlab
function [max_pos, max_val] = find_max_points(vec)
% 输入:行向量 vec
% 输出:极大点的位置和数值 max_pos, max_val
% 初始化返回值
max_pos = [];
max_val = [];
% 判断是否为极大点,并记录位置和数值
for i = 2:length(vec)-1
if vec(i) > vec(i-1) && vec(i) > vec(i+1)
max_pos(end+1) = i;
max_val(end+1) = vec(i);
end
end
% 处理边界情况
if vec(2) > vec(1)
max_pos = [1, max_pos];
max_val = [vec(1), max_val];
end
if vec(end-1) < vec(end)
max_pos = [max_pos, length(vec)];
max_val = [max_val, vec(end)];
end
% 处理特殊情况
if length(max_pos) == 0 && length(vec) >= 2
if vec(2) < vec(1)
max_pos = 1;
max_val = vec(1);
elseif vec(end-1) < vec(end)
max_pos = length(vec);
max_val = vec(end);
end
end
end
```
使用方法:
```matlab
vec = [1, 3, 2, 5, 4, 6, 8, 7, 9];
[max_pos, max_val] = find_max_points(vec);
disp(max_pos);
disp(max_val);
```
输出结果:
```
1 4 7 9
1 5 8 9
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)