How to create a continuos surface in 3D

조회 수: 5 (최근 30일)
Francesco
Francesco 2014년 4월 6일
댓글: Francesco 2014년 4월 6일
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!

채택된 답변

Mischa Kim
Mischa Kim 2014년 4월 6일
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
Mischa Kim
Mischa Kim 2014년 4월 6일
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 2014년 4월 6일
It works very well! Thank you!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

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

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by