How to create a continuos surface in 3D

2 views (last 30 days)
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!

Accepted Answer

Mischa Kim
Mischa Kim on 6 Apr 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 Comments
Mischa Kim
Mischa Kim on 6 Apr 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 on 6 Apr 2014
It works very well! Thank you!

Sign in to comment.

More Answers (1)

Youssef  Khmou
Youssef Khmou on 6 Apr 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 Comments
Francesco
Francesco on 6 Apr 2014
I noticed right now that no one among x y and z are matrices but scalar value
Youssef  Khmou
Youssef Khmou on 6 Apr 2014
Edited: Youssef Khmou on 6 Apr 2014
use :
X=X';
and perform the code above

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!