シンプル注釈:ここで
がピークに注釈を付けるための簡単な方法です:
x
と
y
があなたのデータであり、
x_peak
と
y_peak
は座標である
plot(x,y,x_peak,y_peak+0.1,'v','MarkerFaceColor','r');
注釈を付けるピーク。 0.1
の追加は注釈の配置を改善するためのもので、データ用に調整する必要があります。例えば
(いくつかの任意のデータを持つ):
x = 1:1000;
y = sin(0.01*x).*cos(0.05*x);
[y_peak,x_peak] = PeakDetection(y); % this is just a sketch based on your code...
plot(x,y,x_peak,y_peak+0.1,'v','MarkerFaceColor','r');
結果:
ライン注釈:
これは少し複雑です各行に4つの値が必要なためです。ここでも、x_peak
とy_peak
前などを想定して:
plot(x,y);
hold on
ax = gca;
ymin = ax.YLim(1);
plot([x_peak;x_peak],[ymin*ones(1,numel(y_peak));y_peak],'r')
% you could write instead:
% line([x_peak;x_peak],[ymin*ones(1,numel(y_peak));y_peak],'Color','r')
% but I prefer the PLOT function.
hold off
と結果:
アロー注釈:
をあなたは本当にあなたがして、これらの矢印をしたい場合最初にピーク位置を正規化された図Uに変換する必要がありますニット。ここではそれを行う方法:
plot(x,y);
ylim([-1.5 1.5]) % only for a better look of the arrows
peaks = [x_peak.' y_peak.'];
ax = gca;
% This prat converts the axis unites to the figure normalized unites
% AX is a handle to the figure
% PEAKS is a n-by-2 matrix, where the first column is the x values and the
% second is the y values
pos = ax.Position;
% NORMPEAKS is a matrix in the same size of PEAKS, but with all the values
% converted to normalized units
normpx = pos(3)*((peaks(:,1)-ax.XLim(1))./range(ax.XLim))+ pos(1);
normpy = pos(4)*((peaks(:,2)-ax.YLim(1))./range(ax.YLim))+ pos(2);
normpeaks = [normpx normpy];
for k = 1:size(normpeaks,1)
annotation('arrow',[normpeaks(k,1) normpeaks(k,1)],...
[normpeaks(k,2)+0.1 normpeaks(k,2)],...
'Color','red','LineWidth',2)
end
と結果:
あなたのコードが機能しません。参照:[mcve]。 – excaza
['findpeaks'](http://www.mathworks.com/help/signal/ref/findpeaks.html)を使ってみましたか? – EBH
EBHの皆様、findpeaksは私が入手したい機能を正確に提案していますが、MATLAB Signal処理ツールボックスはありません。だからここでカスタムコードを作ろうとしているのです。私はこれまでのところピークを見つけることができましたが、今は適切な場所にラベルを付けるだけで、最終的にfindpeaks.Asのように線を描く必要があります。 –