MATLAB | 绘制复指数函数 y = exp(j×w×n)的三维图像
1 思路
2 代码
3 结果
4 说明
概要:
本文内容是大二下学期《信号与系统》课上做的一道小题,目的是让我们直观地认识复指数在空间中长什么样,并顺带练习一下MATLAB的绘图技巧。
关键字:
MATLAB; 复指数函数; 三维图像
1 思路
首先认识到复指数函数y=exp(j×w×n)在空间中是一个螺旋前进的三维图像,它前进的方向是自变量序列n增大的方向,w是旋转的速度。在右手系中,若令x轴表示n,y轴表示虚部,z轴表示实部,则从n的正方向往原点看去可以发现:当w>0时,图像顺时针旋转接近;当w<0时,图像逆时针旋转接近。
为了绘制直观地复指数图像,可以连同它在实轴、虚轴上的投影一起绘制。这样一个大任务就分解为6个步骤:
S1-绘制复指数图像的离散点;
S2-绘制每个离散点到旋转轴x轴的垂直连线;
S3-绘制复指数图像在实轴z上的投影,这也是离散点;
S4-绘制实轴投影离散点到旋转轴x轴的垂直连线;
S5-绘制复指数图像在虚轴y上的投影,这也是离散点;
S6-绘制虚轴投影离散点到旋转轴x轴的垂直连线。
2 代码
S1和S2的代码如下:
f=exp(1j*w*n);
L=length(n);
x=n; %以该复函数自变量n作为三维图像的x轴
y=imag(f); %以该复函数虚部作为三维图像的y轴
z=real(f); %以该复函数实部作为三维图像的z轴
y_0=zeros(size(n)); %获取y=0的点集
y_1=ones(size(n)); %获取y=1的点集
z_0=zeros(size(n)); %获取z=0的点集
z_1=ones(size(n)); %获取z=1的点集
plot3(x,y,z,'.b'); %绘制虚指数函数图像
hold on
grid on
x1=[x;x];
y1=[y;y_0];
z1=[z;z_0];
% 绘制复指数函数图像上的点对应的连线
for i=1:L
plot3(x1(:,i),y1(:,i),z1(:,i),'b');
end
% 绘制副部指数函数图像所绕的轴
plot3(x,y_0,z_0,'k');
S3和S4的代码如下:
% 绘制实部的在底面的投影图
plot3(x,y,-1*z_1,'.g');
% 绘制实部的点对应的连线
y2=[y;y_0];
z2=[-1*z_1;-1*z_1];
for i=1:L
plot3(x1(:,i),y2(:,i),z2(:,i),'g');
end
S5和S6的代码如下:
% 绘制虚部的在后面的投影图
plot3(x,y_1,z,'.r');
% 绘制虚部的点对应的连线
y3=[y_1;y_1];
z3=[z;z_0];
for i=1:L
plot3(x1(:,i),y3(:,i),z3(:,i),'r');
end
3 结果
令w=1,n=0:0.1:15; 可以得到结果如图1所示,从n正方向往原点看去,图像的确顺时针靠近。
图1 w=1,n=0:0.1:15; 时的图像
令w=-1,n=0:0.1:15; 可以得到结果如图2所示,从n正方向往原点看去,图像的确逆时针靠近。
图2 w=-1,n=0:0.1:15; 时的图像
4 说明
代码主要部分已全部粘贴在博客,不再附链接。