2010-07-01 7 views
0

Je suis assez nouveau à Matlab et j'apprécierais de l'aide. J'essaie de tracer un nuage de points d'une fonction. Plus tard, je vais adapter d'autres fonctions à ces données et tracer cela sur la même figure. Mais ce que j'ai jusqu'ici trace les marqueurs dans un seul plan, ce qui n'est pas ce que je veux. La fonction est 2D, le graphique devrait être 3D. Comment est-ce que je reçois ceci?Parcelles de dispersion 3D dans Matlab

Voici ce que j'ai essayé jusqu'ici. Il y a un autre code avant cela qui génère des valeurs différentes pour f (i, j) avec des paramètres différents, alors quand j'implémente le code, j'obtiens une série de chiffres.

for i=1:somenumber 
    for j=1:somenumber 
     f(i,j)=etc. 
    end 
end 

figure; 
x=1:somenumber; 
plot3(x,f,x,'rs'); 
hold on; 
+0

@John: Les tracés 3D sont presque toujours horribles. Les choses à l'arrière sont souvent obscurcies, et vous avez des problèmes de perspective pour vous tromper. Essayez d'utiliser la couleur ou le type de marqueur pour encoder la troisième dimension à la place. –

+2

@Richie Cotton: La couleur peut être aussi trompeuse sinon plus. Une intrigue 3D statique, surtout s'il n'y a pas d'ombrage pour vous aider, est difficile à interpréter, je suis d'accord, mais si vous la faites pivoter, elle peut vous montrer des modèles et des relations fonctionnelles qui ne sont pas accessibles autrement. – Jonas

+0

@Jonas: OK, point pris. Il y a quelques cas où la 3D est utile, surtout interactivement, mais je maintiens mon commentaire que souvent les alternatives 2D sont plus claires. –

Répondre

2

Voir mon commentaire pourquoi vous ne voulez pas de nature à faire, mais la manière générale de complot en 3D est

x = 1:10; 
y = 1:5; 
[X Y] = meshgrid(x, y); 
Z = X.^2 + 2 .* Y;  % in general, Z = f(X, Y) 
plot3(X, Y, Z, '+') 
+0

Il semble bon; Je l'ai tracé ici https://saturnapi.com/vpartition/3d-scatter-plot – FullStack

1

Voici une avenue à explorer:

nSamples = nX * nY; 
xValues = zeros(nSamples, 1); 
yValues = zeros(nSamples, 1); 
zValues = zeros(nSamples, 1); 

iSample = 0; 
for iX = 1:nX 
    for iY = 1:nY 
     iSample = iSample + 1; 

     xValues(iSample) = iX; 
     yValues(iSample) = iY; 
     zValues(iSample) = someFunction(iX, iY); 

    end 
end 

figure; 
plot3(xValues(:), yValues(:), zValues(:), 'r.'); 

Cela devrait faciliter l'ajout de bruit à tout ou partie de x, y ou z pour tester votre algorithme d'ajustement de fonction.

Questions connexes