Plotting surf figure, with 2 matrix and one vector. Position/Force over time.

4 vues (au cours des 30 derniers jours)
Trying to plot the below, but am getteing a wierd looking figure shape, does anybody know why?
set(gcf,'Renderer','painters')
figure (1)
surf(MatDecendingPosition, tid,MatDecendingForce)
where "tid" is a time vector, while "MatDecendingPosition" and "MatDecendingForce" are 2 3x220 matrix. Attached the value. Best regards Anders Mahler

Réponse acceptée

Star Strider
Star Strider le 31 Oct 2014
If you want force and position as functions of time, I would use plot3 rather than surf:
figure(1)
plot3(MatDecendingPosition, MatDecendingForce, tid)
grid on
xlabel('Position')
ylabel('Force')
zlabel('Time')
The position-force plot produces an interesting surface:
figure(2)
mesh(MatDecendingPosition, MatDecendingForce)
grid on
xlabel('Position')
ylabel('Force')
Your data are discontinuous, so it will likely be impossible to produce a smooth surface over the entire range of your data.
  2 commentaires
Anders Mahler
Anders Mahler le 7 Nov 2014
Thanks, with the mesh function is a good way to get around the surf function

Connectez-vous pour commenter.

Plus de réponses (2)

Orion
Orion le 31 Oct 2014
Modifié(e) : Orion le 31 Oct 2014
when you use surf, you want to see a surface Z according two others datas X, Y.
surf(X,Y,Z) means you will surf the matrix Z against the matrices of the same size X,Y (or the vectors X,Y), see meshgrid too convert vectors to matrices in order to surf.
Seeing your data (and your question), I think you want to do
figure;
subplot(211)
plot(tid',MatDecendingForce)
title('Force');
xlabel('time');
subplot(212)
plot(tid',MatDecendingPosition)
title('Position');
xlabel('time');
  1 commentaire
Anders Mahler
Anders Mahler le 31 Oct 2014
Thanks, but i am using it to show a force increase over time, in rehap, for injured people, so i really need it to be a 3D plot :-)

Connectez-vous pour commenter.


Orion
Orion le 31 Oct 2014
ok, so you want to use plot3 ?
figure;
Colors = {'b','r','g'};
for i=1:3
plot3(tid',MatDecendingPosition(:,i),MatDecendingForce(:,i),Colors{i});
hold on;
end
xlabel('time');
ylabel('Position');
zlabel('Force');
grid
legend('result 1','result 2','result 3')

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by