2011-07-31 5 views
0

Je veux tracer un graphique en 3D en utilisant surf dans matlab. Je sais comment tracer juste en utilisant surf:tracé en temps réel dans matlab en utilisant SURF

k = 5; 
n = 2^k-1; 
[x,y,z] = sphere(n); 
c = hadamard(2^k); 
p=surf(x,y,z); 

mais je veux tracer cela en temps réel, et je veux mettre à jour les valeurs à l'aide ensemble. Je fatigué: set(p,"XData",Xvalue,"YData",Yvalue,"ZData",Zvalue); mais c'est en me donnant des erreurs. Quelqu'un a-t-il trimé en utilisant le surf en temps réel?

+0

Utilisez des guillemets simples pour les noms de propriété: 'set (p, 'XData', Xvalue, 'YData', Yvalue, 'ZData', Zvalue);', suivi de 'drawnow' pour vider la file graphique. – Jonas

+0

merci, j'ai mal tapé le ", oui j'ajouterai le drawnow – Rave

Répondre

2

1) vous pouvez utiliser la commande linkdata ou bouton barre d'outils (ou même Outils -> Lien de la fenêtre de tracé)

2) programme: vous devez appeler la commande « RefreshData » pour signaler que de nouvelles données disponible:

%% Define the data 
t=linspace(0,2*pi,40); 
y=sin(t); 

%% Create the plot and set teh datasources 
h=plot(t,y) 
set(h,'YDataSource','y') 
set(h,'XDataSource','t') 

%% Now update the data and the plot 
pause 
y=sin(2*t); 
refreshdata 

Ce qu'il montre pour le plot, mais attendez-vous surf se comportera de la même chose.