标注极大值和极小值,不是最大值和最小值
时间: 2024-01-15 20:02:28 浏览: 101
如果要标注极大值和极小值,可以使用`findpeaks`函数和`findpeaks`函数中的一些参数来实现。具体步骤如下:
1. 使用`findpeaks`函数找到`D`中的所有极大值和极小值及其对应的下标。
```
[peaks, locs] = findpeaks(D);
[valleys, val_locs] = findpeaks(-D);
```
`peaks`表示`D`中的所有极大值,`locs`表示这些极大值在`D`中的下标,`valleys`表示`D`中的所有极小值,`val_locs`表示这些极小值在`D`中的下标。由于`findpeaks`函数默认寻找的是极大值,而我们需要寻找极小值,因此需要对`-D`进行寻找极大值操作。
2. 使用`plot`函数将`peaks`和`valleys`的值标注在`plot(D)`图像上。
```
hold on;
plot(locs, peaks, 'r*', 'MarkerSize', 10);
text(locs, peaks, num2str(peaks'));
plot(val_locs, valleys, 'g*', 'MarkerSize', 10);
text(val_locs, valleys, num2str(valleys'));
hold off;
```
这里的`hold on`和`hold off`函数用于在同一个图像窗口中绘制多张图像,`plot`函数用于绘制红色星号和绿色星号分别代表极大值和极小值,`text`函数用于在星号的旁边标注对应的数值。
完整的代码如下:
```
D = zeros(1, B);
for i = 1:1:B
D(i) = sqrt((contour(i,1)-470).^2 + (contour(i,2)-466).^2);
end
[peaks, locs] = findpeaks(D);
[valleys, val_locs] = findpeaks(-D);
hold on;
plot(D);
plot(locs, peaks, 'r*', 'MarkerSize', 10);
text(locs, peaks, num2str(peaks'));
plot(val_locs, valleys, 'g*', 'MarkerSize', 10);
text(val_locs, valleys, num2str(valleys'));
hold off;
```
运行后,会得到一张带有极大值和极小值标注的`D`向量图像。
阅读全文