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 commentaire

Turlough Hughes
Turlough Hughes le 11 Mar 2020
Modifié(e) : Turlough Hughes le 11 Mar 2020
What do you mean by one cycle? Are you looking for the maximum change in y given a change in x of 3?

Connectez-vous pour commenter.

 Réponse acceptée

Image Analyst
Image Analyst le 11 Mar 2020

1 vote

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 commentaires

Arief Kus
Arief Kus le 11 Mar 2020
Thank you very much for your help.
Image Analyst
Image Analyst le 11 Mar 2020
You're welcome. Can you "Accept this answer" now by clicking the link?
Arief Kus
Arief Kus le 18 Mar 2020
Done. I am really sorry for late in clicking "Accept this answer".
Arief Kus
Arief Kus le 18 Mar 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Simulink dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by