0

以下のコードは、プロットの特定の領域を強調しています。

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%として定義されます。領域がデータのパーセンテージで正確に指定されないように変更したいと思います。これは、データセットのサイズに応じて変更されるためです。ハイライトされた領域の厚さを定義するための代替方法を誰かが提案できますか?

4

1 に答える 1

0

このようなパラメーターはx、 、a、およびbを定数と見なすのと同じように、定数と見なす必要があります。

w強調表示された領域の一定の幅を定義します。

w = 1.0;

次に、領域を描画するコード行は、現在のピークの両側に w/2 になります。

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

w現在のニーズに合うように調整します。

于 2012-07-21T10:08:34.423 に答える