
How to number the peaks and troughs of signal ?
23 次查看(过去 30 天)
显示 更早的评论
Suvvi Kuppur Narayana Swamy
2020-7-3
评论: Suvvi Kuppur Narayana Swamy
2020-7-3
Here is my signal where i need to number the peaks and troughs in numbers as 1,2,3,4...
0 个评论
采纳的回答
Image Analyst
2020-7-3
Try findpeaks() in the Signal Processing Toolbox. Invert the signal to find valleys.
numPoints = 50;
x = sort(rand(1, numPoints));
y = rand(1, numPoints);
plot(x, y, 'k-', 'LineWidth', 2);
grid on;
[peakValues, indexesOfPeaks] = findpeaks(y);
hold on;
peakx = x(indexesOfPeaks);
peaky = y(indexesOfPeaks);
plot(peakx, peaky, 'r*', 'LineWidth', 2, 'MarkerSize', 10);
% Find valleys on inverted signal
[valleyValues, indexesOfValleys] = findpeaks(-y);
valleyx = x(indexesOfValleys);
valleyy = y(indexesOfValleys);
hold on;
plot(valleyx, valleyy, 'b*', 'LineWidth', 2, 'MarkerSize', 10);

Be careful with the first and last point of your data since it doesn't find those. You should look at the adjacent index (2 or end-1) if you want to classify them as either a peak or valley.
3 个评论
Image Analyst
2020-7-3
Do you know about the text() function?
numPoints = 50;
x = sort(rand(1, numPoints));
y = rand(1, numPoints);
plot(x, y, 'k-', 'LineWidth', 2);
grid on;
[peakValues, indexesOfPeaks] = findpeaks(y);
hold on;
peakx = x(indexesOfPeaks);
peaky = y(indexesOfPeaks);
plot(peakx, peaky, 'r*', 'LineWidth', 2, 'MarkerSize', 10);
% Find valleys on inverted signal
[valleyValues, indexesOfValleys] = findpeaks(-y);
valleyx = x(indexesOfValleys);
valleyy = y(indexesOfValleys);
hold on;
plot(valleyx, valleyy, 'b*', 'LineWidth', 2, 'MarkerSize', 10);
% Plot peak labels
for k = 1 : length(peakx)
textLabel = sprintf(' %d', k);
text(peakx(k), peaky(k), textLabel, 'HorizontalAlignment', 'left', 'VerticalAlignment', 'bottom', 'Color', 'r', 'FontWeight', 'bold');
end
% Plot valley labels
for k = 1 : length(valleyx)
textLabel = sprintf(' %d', k);
text(valleyx(k), valleyy(k), textLabel, 'HorizontalAlignment', 'left', 'VerticalAlignment', 'top', 'Color', 'b', 'FontWeight', 'bold');
end

更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!