MATLAB | 绘制复指数函数 y = exp(j*w*n)的三维图像

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正方向往原点看去,图像的确顺时针靠近。

MATLAB | 绘制复指数函数 y = exp(j*w*n)的三维图像_第1张图片
图1 w=1,n=0:0.1:15; 时的图像

 
   令w=-1,n=0:0.1:15; 可以得到结果如图2所示,从n正方向往原点看去,图像的确逆时针靠近。

MATLAB | 绘制复指数函数 y = exp(j*w*n)的三维图像_第2张图片
图2 w=-1,n=0:0.1:15; 时的图像

4 说明

   代码主要部分已全部粘贴在博客,不再附链接。

你可能感兴趣的:(MATLAB)