If I want to choose one cycle. The cycle must have criteria : largest distance maximum & minimum, 3 point cross X axis. Thank you very much in advanced.

1 Kommentar

Turlough Hughes
Turlough Hughes am 11 Mär. 2020
Bearbeitet: Turlough Hughes am 11 Mär. 2020
What do you mean by one cycle? Are you looking for the maximum change in y given a change in x of 3?

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Image Analyst
Image Analyst am 11 Mär. 2020

1 Stimme

This will do it:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
s = load('data.mat')
data = s.data;
hFig = figure;
plot(data, 'b-', 'LineWidth', 2)
grid on;
xlabel('Index', 'FontSize', fontSize);
ylabel('Signal', 'FontSize', fontSize);
% Maximizxe the window.
hFig.WindowState = 'maximized';
% Find the max
[maxValue, indexOfMax] = max(data)
% Find the min
[minValue, indexOfMin] = min(data)
% Find out where the signal last crosses 0 before the peak
% First set after the peak to infinity so we do not find that.
tempSignal = data;
tempSignal(indexOfMax:end) = inf;
indexLeft = find(tempSignal < 0, 1, 'last')
% Plot a red spot there.
hold on;
plot(indexLeft, data(indexLeft), 'r.', 'MarkerSize', 40);
% Find out where the signal first crosses 0 after the max peak on the right side.
% First set before the valley to infinity so we do not find the peak.
tempSignal = data;
tempSignal(1 : indexOfMax) = inf;
indexMiddle = find(tempSignal < 0, 1, 'first')
% Plot a red spot there.
hold on;
plot(indexMiddle, data(indexMiddle), 'r.', 'MarkerSize', 40);
% Find out where the signal first crosses 0 after the min peak (the biggest valley).
% First set before the valley to -infinity so we do not find the peak.
tempSignal = data;
tempSignal(1 : indexOfMin) = -inf;
indexRight = find(tempSignal > 0, 1, 'first')
% Plot a red spot there.
hold on;
plot(indexRight, data(indexRight), 'r.', 'MarkerSize', 40);

4 Kommentare

Arief Kus
Arief Kus am 11 Mär. 2020
Thank you very much for your help.
Image Analyst
Image Analyst am 11 Mär. 2020
You're welcome. Can you "Accept this answer" now by clicking the link?
Arief Kus
Arief Kus am 18 Mär. 2020
Done. I am really sorry for late in clicking "Accept this answer".
Arief Kus
Arief Kus am 18 Mär. 2020
If I have X and Y data. I want to choose one cycle. The cycle must have criteria : largest distance maximum & minimum, 3 point cross X axis.Thank you very much in advance.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by