Failing in creating a surface from three array
조회 수: 2 (최근 30일)
이전 댓글 표시
I am trying to create a surface from this dataset
x=[0.5 ; 0.624; 0.75;0.874; 0.9;1;1.124]
y=[0; 1.1;1; 0.9;0.6;0]
z=[0.726582; 0.629144; 0.714131; 0.499709; 0.668832; 0.664573]
I am using this code found in here
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
figure
surf(X,Y,Z)
but I get this error
"Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that
dimension.
Error in untitled2 (line 8)
Z = reshape(z,size(X)) ;"
I cannot understand what I am doing wrong.
댓글 수: 0
채택된 답변
Star Strider
2022년 9월 2일
편집: Star Strider
2022년 9월 2일
x=[0.5 ; 0.624; 0.75;0.874; 0.9;1.124];
y=[0; 1.1;1; 0.9;0.6;0];
z=[0.726582; 0.629144; 0.714131; 0.499709; 0.668832; 0.664573];
N = 10;
xv = linspace(min(x), max(x), N);
yv = linspace(min(y), max(y), N);
[X,Y] = ndgrid(xv, yv);
Z = griddata(x, y, z, X, Y);
figure
surfc(X, Y, Z)
grid on
xlabel('X')
ylabel('Y')
zlabel('Z')
view(70,30)
.
댓글 수: 0
추가 답변 (1개)
Torsten
2022년 9월 2일
To create a surface, you need a z value for each combination of (x/y) values. Thus instead of a vector z with 6 elements you need a matrix of size (7x6).
댓글 수: 2
Torsten
2022년 9월 2일
편집: Torsten
2022년 9월 2일
x=[0.5 ; 0.624; 0.75;0.874; 0.9;1;1.124];
y=[0; 1.1;1; 0.9;0.6;0];
z=[0.726582; 0.629144; 0.714131; 0.499709; 0.668832; 0.664573];
[X,Y] = meshgrid(x,y);
Z = repmat(z,1,7);
surf(X,Y,Z)
But the surface plot only makes sense if you really have a function f with z(i,j) = f(x(i),y(j))
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!