在2d线图中突出显示的区域

时间:2012-07-21 08:28:00

标签: matlab plot

下面的代码突出显示了某个地块的某些区域:

x = 1:24;
a = 1;
b = 50;
y = a + (b-1).*rand(length(x),1);

plot(x,y);

%find the peaks in the data and hilghlight the regions
[pks,locs] = findpeaks(y);

for i = 1:length(locs);
    h = area([locs(i)-(locs(i)/100) locs(i)+(locs(i)/100)],[max(y) max(y)]);
    set(h,'FaceColor',[.5,.5,.5]);
    set(h,'EdgeColor',[.5,.5,.5]);
    h1 = get(h,'children');
    set(h1,'FaceAlpha',0.3);
    hold on
end
    plot(x,y,'k');
    hold off;
    axis([min(x) max(x) min(y) max(y)]);

突出显示的区域定义为局部最大值两侧数据长度的1%。我想改变,以便区域不是由一定百分比的数据精确指定的,因为这将根据数据集的大小而改变。任何人都可以提出另一种方法来定义突出显示区域的厚度吗?

1 个答案:

答案 0 :(得分:0)

我想说这样的参数应该被视为常量,就像你认为xab是常量一样。

我会定义突出显示区域的恒定宽度w

w = 1.0;

然后绘制区域的代码行将在当前峰值的每一侧为w / 2:

h = area( ...
   [locs(i)-(w/2) locs(i)+(w/2)], ...
   [max(y) max(y)] ...
);

调整w以使其符合您当前的需求。