Effacer les filtres
Effacer les filtres

How to create a continuos surface in 3D

2 vues (au cours des 30 derniers jours)
Francesco
Francesco le 6 Avr 2014
Commenté : Francesco le 6 Avr 2014
Hi, I have this .mat file that is a 8950x3 matrix, the 1st column contains the x-coordinates, the 2nd one the y-coordinates and the third contains the z-coordinates. I would draw a continuos surface like the following figure
The only difference is that z is not the result of a function but is a vector. Is it possible? Thanks to all!

Réponse acceptée

Mischa Kim
Mischa Kim le 6 Avr 2014
How about doing it from scratch?
x = -2:0.1:2;
y = -2:0.1:2;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-(X - Y.^2).^2 - Y.^2);
surf(X,Y,Z)
  3 commentaires
Mischa Kim
Mischa Kim le 6 Avr 2014
Yes it is. If you want to generate directly from the matrix from the .mat file, this should work:
M = sortrows(m,[1 2]) % m is the matrix from the .mat file
nc = numel(unique(M(:,1)));
x = reshape(M(:,1),[],nc);
y = reshape(M(:,2),[],nc);
z = reshape(M(:,3),[],nc);
surf(x,y,z)
Francesco
Francesco le 6 Avr 2014
It works very well! Thank you!

Connectez-vous pour commenter.

Plus de réponses (1)

Youssef  Khmou
Youssef Khmou le 6 Avr 2014
Try to use this method :
% X is the 8950*3 matrix
x=X(:,1)'*X(:,1); % 8950x8950
y=X(:,2)'*X(:,2);
z=X(:,3)'*X(:,3);
figure; surf(X,Y,Z)
  3 commentaires
Francesco
Francesco le 6 Avr 2014
I noticed right now that no one among x y and z are matrices but scalar value
Youssef  Khmou
Youssef Khmou le 6 Avr 2014
Modifié(e) : Youssef Khmou le 6 Avr 2014
use :
X=X';
and perform the code above

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by