上课需要把一些公式画成三维的图形方便理解,第一次尝试使用matlab绘图,看了几篇博客后再进行尝试,但是还是踩了很多雷,浪费了一点时间。
要画的公式是球坐标系下的
sin
2
θ
\sin^2θ
sin2θ
首先尝试在极坐标系中绘图。
theta = -pi/2 : pi/50 : pi/2;
p = 1 - power(sin(theta),2);
polar(theta,p);
得到的图是这样的
看起来不太好看,转化成笛卡尔坐标系,添加代码
[x,y] = pol2cart(theta,p);
subplot(1,2,2);
plot(x,y);
axis([0 1 -0.5 0.5]);
理解了怎么画平面图后,下面着手画三维图
%数据准备
theta = -pi/2 : pi/50 : pi/2;
fi = 0 : pi/50 : pi;
[FI,TH] = meshgrid(fi,theta);
r = 1 + power(sin(TH),2);
[X,Y,Z] = sph2cart(FI,TH,r);
C = sqrt(X.^2 + Y.^2);
%绘图
figure;
S = surf(X,Y,Z,C);
%S.FaceAlpha = 0.5;
view(3);
colorbar;
shading interp;
title('sin^2x');
xlabel('x');
ylabel('y');
zlabel('z');
执行后得到的图片是这样的
这里的代码中要注意一个很大的坑,就是球坐标系中的θ角。在高数中θ的定义是与Z轴的夹角,取值范围是[0,Π],但是这里的θ和极坐标的定义是差不多的,是和xy平面的夹角,取值范围是±pi/2,所以这里稍不留神就会踩进这个坑里面。
现在,运用matlab,可以画各种三维图了。