make function to plot countour and 3D

조회 수: 5 (최근 30일)
nirwana
nirwana 2023년 3월 17일
답변: Walter Roberson 2023년 3월 17일
Hi, I want to make automatic function to plot 3D mesh and contour to given any function, but it turn doesn't work, can you help me ? here the function that I wrote
function plot3dfunc(f,Xmin,Xmax,Ymin,Ymax)
Z=f;
x=linspace(Xmin,Xmax,50);
y=linspace(Ymin,Ymax,50);
[X,Y] = meshgrid(x,y);
subplot(1,2,1);
cs=contour(X,Y,Z);clabel(cs);
xlabel('x_1');ylabel('x_2');
title('(a) Contour plot');grid;
subplot(1,2,2);
cs=surf(X,Y,Z);
zmin=floor(min(Z));
zmax=ceil(max(Z));
xlabel('x_1');ylabel('x_2');zlabel('f(x_1,x_2)');
title('(b) Mesh plot');
When I put
f=@(X,Y) 2+X-Y+2*X.^2+2*X.*Y+Y.^2;
plot3dfunc(f,-2,0,0,3)
it says :
Error using contour
Input arguments must be numeric or objects which can be converted to double.

채택된 답변

Walter Roberson
Walter Roberson 2023년 3월 17일
f=@(X,Y) 2+X-Y+2*X.^2+2*X.*Y+Y.^2;
plot3dfunc(f,-2,0,0,3)
function plot3dfunc(f,Xmin,Xmax,Ymin,Ymax)
x=linspace(Xmin,Xmax,50);
y=linspace(Ymin,Ymax,50);
[X,Y] = meshgrid(x,y);
Z = f(X,Y);
subplot(1,2,1);
cs=contour(X,Y,Z);clabel(cs);
xlabel('x_1');ylabel('x_2');
title('(a) Contour plot');grid;
subplot(1,2,2);
cs=surf(X,Y,Z);
zmin=floor(min(Z));
zmax=ceil(max(Z));
xlabel('x_1');ylabel('x_2');zlabel('f(x_1,x_2)');
title('(b) Mesh plot');
end

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Point Cloud Processing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by