问题描述
我通过以下代码实现了这一点:
data = mzcdfread('sample1.cdf');
[pks,locs,w,p] = findpeaks(data.ordinate_values)
plot(data.ordinate_values)
其中
locs
返回每个峰顶部的x
值,而pks
返回每个峰的y
值。 locs
和pks
的示例如下:
pks =
10×1 single column vector
0.6649
0.7314
0.7536
1.3797
0.2394
0.4322
0.2090
0.5402
0.6797
0.3059
locs =
1199
2399
3599
4799
5999
7199
8399
9599
10799
11999
这是我试图在每个峰的顶部绘制一个圆形标记的方法,但是它不起作用:
% r as radius
r = 0.2
ang=0:0.01:2*pi;
xp=r*cos(ang);
yp=r*sin(ang);
plot(data.ordinate_values,locs+xp,pks+yp)
解决方法
您应该使用Matlab的常规plot()
内置函数和'Marker'
选项来绘制圆圈:
plot(locs,pks,'Marker','o');
您还可以设置圆形标记的大小和颜色:
plot(locs,...
'Color','r',...
'Marker','o',...
'MarkerSize',14);
这意味着data.ordinate_values
给出的曲线和每个峰值处的圆分别绘制。因此,您需要在两个绘图命令之间(或在初始化图形时)使用hold on
。
figure;
plot(data.ordinate_values);
hold on;
plot(locs,14);