MATLAB: How to measure an angle of peaks in a plot

angleplot

I want to measure the angle of te peaks in the plot. How can I do this?
Y=[36;35;34;33;32;31;30;29;28;27;26;25;24;23;22;21;20;19;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;5;6;7;8;9;10;11;12;13;14;15;16;15;14;13;12;11;10;9;8;7;6;5;6;7;8;9;10;11;12;13;14;15;16;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;16;15;14;13;12;11;10;9;8;7;6;5;6;7;8;9;10;11;12;13;14;15;16;17;18;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36]
[pks,locs] = findpeaks(Y);
hold on
plot(Y)
plot(locs, pks,"rx")
hold off

Best Answer

  • That completely depends on how you define ‘angle’.
    This calculates the angle based on the peaks, and draws quiver arrows (‘angrad’ are the angles in radians):
    angrad = atan2(pks,locs);
    figure
    hold on
    plot(Y)
    plot(locs, pks,"rx")
    quiver(locs,pks,cos(angrad),sin(angrad), 0.25)
    hold off
    this calculates and draws arrows between adjacent peaks:
    angrad = atan2(diff(pks),diff(locs));
    figure
    hold on
    plot(Y)
    plot(locs, pks,"rx")
    quiver(locs(1:end-1),pks(1:end-1),cos(angrad),sin(angrad), 0.25)
    hold off
    There are likely several other ways as well.
    This should get you started.
    EDIT — (2 Oct 2020 at 12:31)
    Corrected typographical error.
    .