Plotting a Semi-Log Plot as a Function of Time
43 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Gus Giannakopoulos
le 15 Déc 2024 à 3:25
Commenté : Gus Giannakopoulos
le 16 Déc 2024 à 2:38
I am fairly new to Matlab plotting and I can't figure out the semi-log plotting.
I would like to plot the following as a semi-log plot:
Y-axis
- Y = 50 for t < 0.05
- Y = 31.38 + 0.931/t for 0.05 ≤ t ≥ 7.758
- The Y-axis will have intervals of 0, 10, 20, 30, 40, 50, 60.
X-axis (time axis)
- The X-axis (semi-log) would range from [0.01, 0.1, 1, 10, 100). < -- logspace (-2,2)
- A marker for 7 to be included on the x-axis.
Any help would be appreciated. Thank you.
0 commentaires
Réponse acceptée
Cris LaPierre
le 15 Déc 2024 à 4:30
I'd do something like this. Let me know if you have any questions
t = logspace(-2,2);
% one way to implement a piecewise function in MATLAB
y = (50*(t<0.05) + (31.38 + 0.931./t).*(t>=0.05));
% Creat the plot
semilogx(t,y)
ylim([0,60]) % set range of visible y values. Otherwise, plot collapses to range plotted
yticks(0:10:60) % set desired ytick locations
% by default, log tick lablels are exponenents (e.g 10^-2). This displays
% the equivalent numeric representation
xticklabels(string([0.01, 0.1, 1, 10, 100]))
xline(7,'-','t=7') % add a lins at x=7. Could also use this: plot(7,0,'rx')
xlabel('Time')
7 commentaires
Walter Roberson
le 16 Déc 2024 à 2:34
y = (50)*(t<0.05) + (31.38 + 0.931./t).*(7.758>=t & t>=0.05) + (31.5)*(t>7.758)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Annotations 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!