Effacer les filtres
Effacer les filtres

Only plot outline of graph

9 vues (au cours des 30 derniers jours)
Lara
Lara le 21 Déc 2023
Commenté : Dyuman Joshi le 22 Déc 2023
this is my code:
% Plot the conductivity levels along the line (as an outline)
figure;
plot(lineX, conductivityValues, 'k-', 'LineWidth', 1.5, 'Marker', 'none');
xlabel('X [m]');
ylabel('Conductivity');
title(['Conductivity along Y = ', num2str(targetY)]);
box on
and now i get this plot:
I only wantt to plot the outline of this plot how do I do this?
  5 commentaires
Matt J
Matt J le 21 Déc 2023
Modifié(e) : Matt J le 21 Déc 2023
It is always advisable to attach a .mat file of sample input data to accompany your code, so that the forum can more easily develop and demonstrate solutions.
Dyuman Joshi
Dyuman Joshi le 22 Déc 2023
You can plot the local maximas -
% Numerical data (generated as an example)
% Taken from Matt J's answer
N = 1e3;
t = linspace(-4, 2, N);
R = randn(1,N);
y = sin(t) + 0.5*sin(2*t) + 0.2*sin(3*t)+cos(t) + 0.5*cos(2*t) + 0.2*cos(3*t)+.2*R;
IND = (y<0);
y(IND)=abs(y(IND));
idx = islocalmax(y);
plot(t, y, t(idx), y(idx), 'k--')

Connectez-vous pour commenter.

Réponses (2)

Matt J
Matt J le 21 Déc 2023
Modifié(e) : Matt J le 21 Déc 2023
Use movmax to get the upper envelope of a sequence of data points, and possibly smooth it with sgolayfilt, e.g.,
% Numerical data (generated as an example)
N = 1e3;
t = linspace(-4, 2, N);
R = randn(1,N);
y = sin(t) + 0.5*sin(2*t) + 0.2*sin(3*t)+cos(t) + 0.5*cos(2*t) + 0.2*cos(3*t)+.2*R;
IND = find(y<0);
y(IND)=abs(y(IND));
yupper=sgolayfilt( movmax(y,25), 4,41);
% Data is Plotted
plot(t, y, t,yupper,'LineWidth', 1.5);
legend('Data','Outline',Location='northwest')

Sulaymon Eshkabilov
Sulaymon Eshkabilov le 21 Déc 2023
In this exercise, envelope() with 'peaks' options does a good job, e.g.:
% Numerical data (generated as an example)
N = 1e3;
t = linspace(-4, 2, N);
R = randn(1,N);
y = sin(t) + 0.5*sin(2*t) + 0.2*sin(3*t)+cos(t) + 0.5*cos(2*t) + 0.2*cos(3*t)+.2*R;
IND = find(y<0);
y(IND)=abs(y(IND));
% Data is Plotted
plot(t, y, 'LineWidth', 1.5, 'DisplayName','Data');
hold on;
% Envelope function is applied
[UP, ~] = envelope(y,15, 'peaks');
% UPPER Envelope is plotted
plot(t, UP, 'k-', 'linewidth', 2.5, 'DisplayName','Outer Profile Shape')
legend('Location', 'Best')
hold off;

Catégories

En savoir plus sur Line Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by