Plusieurs parcelles dans une figure
J'ai le code suivant et je tiens à combiner l'espace de phase des parcelles en une seule figure.
J'ai codé les fonctions, mais je ne sais pas comment faire MATLAB les mettre dans une figure. Comme vous le voyez, c'est les variables r
, a
, b
, et d
qui change. Comment les combiner?
Je tiens également à tracer le champ de vecteurs de ces de l'espace de phase des parcelles à l'aide de la carquois de commande, mais il ne fonctionne tout simplement pas.
%function lotkavolterra
% Plots time series and phase space diagrams.
clear all; close all;
t0 = 0;
tf = 20;
N0 = 20;
P0 = 5;
% Original plot
r = 2;
a = 1;
b = 0.2;
d = 1.5;
% Time series plots
lv = @(t,x)(lv_eq(t,x,r,a,b,d));
[t,NP] = ode45(lv,[t0,tf],[N0 P0]);
N = NP(:,1); P = NP(:,2);
figure
plot(t,N,t,P,' --');
axis([0 20 0 50])
xlabel('Time')
ylabel('predator-prey')
title(['r=',num2str(r),', a=',num2str(a),', b=',num2str(b),', d=',num2str(d)]);
saveas(gcf,'predator-prey.png')
legend('prey','predator')
% Phase space plot
figure
quiver(N,P);
axis([0 50 0 10])
%axis tight
% Change variables
r = 2;
a = 1.5;
b = 0.1;
d = 1.5;
%time series plots
lv = @(t,x)(lv_eq(t,x,r,a,b,d));
[t,NP] = ode45(lv,[t0,tf],[N0 P0]);
N = NP(:,1); P = NP(:,2);
figure
plot(t,N,t,P,' --');
axis([0 20 0 50])
xlabel('Time')
ylabel('predator-prey')
title(['r=',num2str(r),', a=',num2str(a),', b=',num2str(b),', d=',num2str(d)]);
saveas(gcf,'predator-prey.png')
legend('prey','predator')
% Phase space plot
figure
plot(N,P);
axis([0 50 0 10])
% Change variables
r = 2;
a = 1;
b = 0.2;
d = 0.5;
% Time series plots
lv = @(t,x)(lv_eq(t,x,r,a,b,d));
[t,NP] = ode45(lv,[t0,tf],[N0 P0]);
N = NP(:,1); P = NP(:,2);
figure
plot(t,N,t,P,' --');
axis([0 20 0 50])
xlabel('Time')
ylabel('predator-prey')
title(['r=',num2str(r),', a=',num2str(a),', b=',num2str(b),', d=',num2str(d)]);
saveas(gcf,'predator-prey.png')
legend('prey','predator')
% Phase space plot
figure
plot(N,P);
axis([0 50 0 10])
% Change variables
r = 0.5;
a = 1;
b = 0.2;
d = 1.5;
% Time series plots
lv = @(t,x)(lv_eq(t,x,r,a,b,d));
[t,NP] = ode45(lv,[t0,tf],[N0 P0]);
N = NP(:,1); P = NP(:,2);
figure
plot(t,N,t,P,' --');
axis([0 20 0 50])
xlabel('Time')
ylabel('predator-prey')
title(['r=',num2str(r),', a=',num2str(a),', b=',num2str(b),', d=',num2str(d)]);
saveas(gcf,'predator-prey.png')
legend('prey','predator')
% Phase space plot
figure
plot(N,P);
axis([0 50 0 10])
% FUNCTION being called from external .m file
%function dx = lv_eq(t,x,r,a,b,d)
%N = x(1);
%P = x(2);
%dN = r*N-a*P*N;
%dP = b*a*P*N-d*P;
%dx = [dN;dP];
Vous devez vous connecter pour publier un commentaire.
Eh bien, il ya quelques façons de plusieurs séries de données peuvent être affichées dans la même figure.
Je vais utiliser un petit exemple d'ensemble de données, en collaboration avec les couleurs correspondantes:
Tout d'abord, lorsque vous voulez tout sur le même axe, vous aurez besoin de la
tenir
fonction:Vous voyez que cela est vrai dans de nombreux cas, cependant, cela peut devenir gênant lorsque l'étendue de la dynamique de ces deux quantités sont très différentes (par exemple, la
u
valeurs sont inférieures à 1, tandis que lev
valeurs sont beaucoup plus grandes).Deuxièmement, quand vous avez beaucoup de données ou de grandeurs différentes, il est également possible d'utiliser
intrigue secondaire
différents axes. J'ai aussi utilisé la fonctionlinkaxes
pour relier les axes dans la direction x. Lorsque vous effectuez un zoom avant sur l'un ou l'autre dans MATLAB, l'autre affiche de la même gamme x, ce qui facilite l'inspection de gros ensembles de données.Sous-intrigues ne les déchets de l'espace, mais ils permettent de conserver certaines données sans overpopulating un complot.
Enfin, comme exemple d'une méthode plus complexe pour le tracé des quantités différentes sur la même figure à l'aide de la
plotyy
fonction (ou mieux encore: leyyaxis
fonction depuis R2016a)C'est certainement plus de monde, mais il peut venir dans maniable quand vous avez une grande différence dans la plage dynamique des signaux.
Bien sûr, rien ne vous empêche d'utiliser une combinaison de ces techniques:
hold on
avecplotyy
etsubplot
.edit:
Pour
carquois
, j'ai rarement utiliser cette commande, mais de toute façon, vous avez de la chance, j'ai écrit un code a tout à l'arrière pour faciliter le vecteur des parcelles de terrain. Vous pouvez utiliser les mêmes techniques comme expliqué ci-dessus. Mon code est loin d'être rigoureuse, mais va ici:Lorsqu'il est appelé comme:
cela donne:
Si vous voulez plus de conseils, j'ai trouvé le lien de ma source très utile (quoique mal formaté).
Aussi, vous voudrez peut-être jeter un oeil à la MATLAB de l'aide, il est vraiment génial. Tapez simplement
help quiver
oudoc quiver
en MATLAB ou utiliser les liens que j'ai fournis ci-dessus (qui devraient donner le même contenu quedoc
).Si vous voulez toutes les parcelles sur la même figure, appelez la figure de la commande qu'une seule fois. Utiliser le tenir sur de commande après le premier appel à la commande plot de sorte que les appels successifs à la parcelle ne pas remplacer la précédente parcelles.