版本:matlab R2016a
需求:画一个三维图。xy平面上是y = x^2和y = (x-1)^2之间的区域,纵轴可以是x,y的函数,这里为了简化,简单把z设置为常数1。
clear all
clc
x = -2:0.1:0; %给x range成一系列的点,类似标准曲面中用到的meshgrid
y1 = @(x) (x-1).^2; %定义函数1
y2 = @(x) x.^2; % 定义函数2
[~,n] = size(x);
Y = []; % mesh中的Y矩阵
X = []; % mesh中的X矩阵
for i = 1:n
yy1 = y1(x(i)); % 对每一个x, 产生下边界
yy2 = y2(x(i));% 对每一个x,产生上边界
y = linspace(yy1,yy2,20); % 将两个函数之间产生点用以组成meshgrid中的点
X = [X ones(20,1)*x(i)]; % 为每一个y配置一个x,这些y公用一个x
Y = [Y;y]; % 同上
end
surf(X,Y',ones(20,21)); %ones()相当于Z
总结:目前感觉自由曲面的画法宗旨上与标准曲面上一样,只不过需要自己构建meshgrid。或许还有其他一些更简单的画法,以后再学习吧。
网友评论