Filter löschen
Filter löschen

How to create a continuos surface in 3D

2 Ansichten (letzte 30 Tage)
Francesco
Francesco am 6 Apr. 2014
Kommentiert: Francesco am 6 Apr. 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!

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by