Bonjour à tous les deux encore ;-)
Effectivement, il n'y a pas de souci pour donner des matrices à Matlab pour le plot3.
En reprenant ce qu'a écrit BELTIDOWN :
s1 liée à s5
s1 liée à s4
s1 liée à s3
s3 liée à s5
s3 liée à s2
s5 liée à s2
Cela donnerait quelque chose du genre :
P = [s1;s5;s1;s4;s1;s3;s3;s5;s3;s2;s5;s2];
plot3(reshape(P(:,1),[2 6]),reshape(P(:,2),[2 6]),reshape(P(:,3),[2 6]));
Il n'en est pas question dans le
message 4, mais s'il s'agit de tracer tous les segments possibles reliant les 5 points, ils ne sont pas tous tracés ici (il y en a 10 normalement). De plus, si c'est effectivement le but recherché, pour un nombre de points un peu plus important, cela risque d'être quelque peu laborieux à taper. Dans ce cas, ce ne serait pas mal d'utiliser la fonction
nchoosek de Matlab pour avoir toutes les combinaisons possibles de 2 points.
Quelque chose du genre devait convenir :
%% Supposons qu'il y ait 10 points
n = 10;
%% Juste pour l'exemple, on choisit 10 points au hasard
s = rand(n,3);
s1=s(1,:);s2=s(2,:);s3=s(3,:);s4=s(4,:);s5=s(5,:);s6=s(6,:);s7=s(7,:);s8=s(8,:);s9=s(9,:);s10=s(10,:);
%% Toutes les combinaisons possibles de 2 entiers choisis parmi
%% 1,2,3,4,5,6,7,8,9,10
C = nchoosek((1:n),2).';
nc = nchoosek(n,2);
%% On construit la chaîne de caractères à évaluer
%% pour la passer en argument à plot3
C = strtrim(cellstr([num2str(reshape(C,[2*nc 1])) repmat(';',[2*nc 1])]));
P = strvcat(strcat(cellstr(repmat('s',[2*nc 1])),C)).';
P = reshape(P,1,numel(P));
P = ['[' P(1:end-1) '];'];
%% On évalue P
P = eval(P);
%% On trace
plot3(reshape(P(:,1),[2 nc]),reshape(P(:,2),[2 nc]),reshape(P(:,3),[2 nc])); Bonne journée
Tous les animaux criaient bien haut
Qu’il était le crapaud le plus beau, quand il jouait du banjo