MATLAB GUI设计入门与实战
上QQ阅读APP看书,第一时间看更新

1.2 Figure图形属性设置

Figure图形属性设置主要针对figure图形进行图形线条、颜色、显示样式等的设置,本节主要讲述基本Figure图形plot函数应用绘图、线型和颜色设置、网格化、曲面图绘制以及特殊字符标记等。

1.2.1 plot绘图

绘制一个洛伦兹曲线,程序如下:

    function ysw1_6
    % Designed by Yu Shengwei From SWJTU University
    % 2014年12月29日
    clc,clear,close all                      % 清理命令区、清理工作区、关闭显示图形
    warning off                               % 消除警告
    feature jit off                          % 加速代码运行 
    t_final=100;                              % 终止时间
    x0=[0;0;1e-10];                           % 初值
    [t,x]=ode45(@lorenzeq,[0,t_final],x0);    % 龙格库塔法 
    figure('color',[1,1,1]);                    % 先建图形窗口
    subplot(211),plot(t,x);                      % 根轨迹图
    subplot(212),plot3(x(:,1),x(:,2),x(:,3));     % 3D曲线图
    axis([10,42,-20,20,-20,25]);                % 坐标轴显示范围设置
    colormap(jet)                              % 颜色
    shading interp                             % 消隐
    end
    
    function xdot=lorenzeq(t,x)
    xdot=[-8/3*x(1)+x(2)*x(3);
        -10*x(2)+10*x(3);-x(1)*x(2)+28*x(2)-x(3)];
    end

运行程序输出结果如图1-9所示。

图1-9 洛伦兹曲线

如图1-9所示,MATLAB提供了丰富的可视化图形显示界面,用户可以很清楚地知道曲线的走势,MATLAB也因其友好的人机交互模式受到越来越多的人的喜好。

最简单的正切函数画图,代码如下:

    clc,clear,close all      % 清理命令区、清理工作区、关闭显示图形
    warning off               % 消除警告
    feature jit off          % 加速代码运行 
    x = 0:0.05:10;            % 0.05,0.1,0.15,0.2,……,10
    y = tan(x);               % 曲线方程
    plot(x,y,'r.-')          % 画图
    grid on; xlabel('x'); ylabel('y')

运行程序输出结果如图1-10所示。

图1-10 正切函数图形

如图1-10所示,用户只需输入x和y,就可以画出图形,且图形就像一个描点图纸,每一个点连接即成一条曲线。其实单纯的plot画图是很简单的,如何得到x和y,才是工程上应该考虑的问题。

1.2.2 线型和颜色设置

1.线型

不同的曲线,我们希望显示不同的线型,以方便用户区分不同的工况,MATLAB图形工具箱为此提供了很丰富的线型设置,以下将主要列举作者使用过的线型——常用线型。

具体的MATLAB程序如下:

    clc,clear,close all  % 清理命令区、清理工作区、关闭显示图形
    warning off           % 消除警告
    feature jit off      % 加速代码运行 
    x = 1:5:100;          % 1,6,11,16,……,96
    % 直线方程
    y1 = 1*x;         y2 = 2*x;             % 直线方程
    y3 = 3*x;         y4 = 4*x;             % 直线方程
    y5 = 5*x;         y6 = 6*x;             % 直线方程
    y7 = 7*x;         y8 = 8*x;             % 直线方程
    y9 = 9*x;         y10 = 10*x;            % 直线方程
    figure('color',[1,1,1]);             % 先建图形窗口
    hold on
    plot(x,y1,'-')  plot(x,y2,'--')      % 画图
    plot(x,y3,'.-')  plot(x,y4,'*-')      % 画图
    plot(x,y5,'s-')  plot(x,y6,'p-')      % 画图
    plot(x,y7,'>-')  plot(x,y8,'<-')      % 画图
    plot(x,y9,'h-')  plot(x,y10,'o-')      % 画图
    grid on; xlabel('x'); ylabel('y')

运行程序输出结果如图1-11所示。

图1-11 线型设置

2.颜色

颜色设置直接在线型设置前面添加颜色英文首字母即可,具体的MATLAB程序如下:

    figure('color',[1,1,1]); % 先建图形窗口
    hold on
    plot(x,y1,'r-')   plot(x,y2,'g--')  % 画图
    plot(x,y3,'b.-')  plot(x,y4,'k*-')  % 画图
    plot(x,y5,'cs-')  plot(x,y6,'mp-')  % 画图
    plot(x,y7,'w>-')  plot(x,y8,'y<-')  % 画图
    grid on; xlabel('x'); ylabel('y')

运行程序输出结果如图1-12所示。

图1-12 线型颜色设置

如图1-11和图1-12所示,总结MATLAB线型和颜色如表1-2所示。

表1-2 点样式及线颜色

1.2.3 图像网格化grid

1.无网格

MATLAB画图,默认是无网格的,具体程序如下:

    % 2014年12月29日
    clc,clear,close all  % 清理命令区、清理工作区、关闭显示图形
    warning off       % 消除警告
    feature jit off      % 加速代码运行 
    x = 1:0.1:10;
    y = x.^2 + max(x)*sin(x);
    plot(x,y)         % 画图

运行程序输出图形如图1-13所示。

图1-13 无网格

2.有网格

如图1-13所示为无网格图形,MATLAB中,采用grid函数即可实现图形的网格化,具体如下:

    grid on  % 有网格

运行程序输出图形如图1-14所示。

图1-14 网格化

如图1-14所示的图形为已经网格化的图形,如何将图1-14中的网格化去掉呢?MATLAB也提供了较简易的操作函数,具体如下:

    x = 1:0.1:10;
    y = x.^2 + max(x)*sin(x);
    plot(x,y)
    grid on   % 网格化
    
    grid off    % 去网格化

运行程序输出图形如图1-15所示。

图1-15 去网格化

1.2.4 曲面图绘制

三维曲面绘制,由x、y、z构成,输入相应的x、y、z,采用MATLAB三维曲面显示函数即可显示,程序如下。

1.surf

具体MATLAB程序如下:

    %% 曲面surf
    % Designed by Yu Shengwei From SWJTU University
    % 2014年12月29日
    clc,clear,close all          % 清理命令区、清理工作区、关闭显示图形
    warning off                   % 消除警告
    feature jit off              % 加速代码运行 
    [x,y] = meshgrid([1:0.1:10],[1:0.1:10]);
    z = x.^2+y.^3.*sin(x);       % Z
    figure('color',[1,1,1])        % 先建一个背景为白色的图形窗口
    surf(x,y,z)                      % 曲面
    xlabel('x');ylabel('y');zlabel('z');  % xyz轴标记

运行程序输出图形如图1-16所示。

图1-16 surf三维曲面

2.mesh

采用如图1-16所示的三维曲面进行mesh操作,具体如下:

    figure('color',[1,1,1])       % 先建一个背景为白色的图形窗口
    mesh(x,y,z)                      % 曲面
    xlabel('x');ylabel('y');zlabel('z'); % xyz轴标记

运行程序输出图形如图1-17所示。

图1-17 mesh三维曲面

1.2.5 特殊字符标记

MATLAB提供了对图形上特殊字符进行标记的功能,对于上下标的标定,工程上应用较广泛,例如等的标记,MATLAB提供了上下控制指令,具体如表1-3所示。

表1-3 上下控制指令

对于常见的阿拉伯字母,如等注释符号,MATLAB也提供了特殊的字符命令,具体如表1-4所示。

表1-4 希腊字母

还有其他的一些数学字符命令,即数学公式编辑器中出现的字符,MATLAB提供了相应的字符指令,具体如表1-5所示。

表1-5 其他字符

针对这些特殊字符的标记,用户可以将要使用的特殊字符变量显示在图形中,达到一一对应的关系,因此在实际应用中广泛使用。

如对标记,具体的MATLAB程序如下:

    % Designed by Yu Shengwei From SWJTU University
    % 2014年12月29日
    clc,clear,close all          % 清理命令区、清理工作区、关闭显示图形
    warning off                   % 消除警告
    feature jit off              % 加速代码运行 
    x = 0:0.05:10;                % 0.05,0.1,0.15,0.2,……,10
    y = exp(-x).*sin(x);           % 曲线方程
    plot(x,y,'r.-')               % 画图
    grid off; xlabel('x'); ylabel('y')
    text(3,0.1,'e^{-t}sint');
    text(5,0.1,'x~{\chi}_{\alpha}^{2}(2)');

运行程序得到如图1-18所示结果。

图1-18 特殊字符标记(1)

针对表1-4所示的特殊字符,进行图形标记,具体的MATLAB程序如下:

    clc,clear,close all                      % 清理命令区、清理工作区、关闭显示图形
    warning off                                       % 消除警告
    feature jit off                                  % 加速代码运行 
    x = 0:0.05:10;                                    % 0.05,0.1,0.15,0.2,……,10
    y = exp(-0.5*x).*sin(10*x);                      % 曲线方程
    plot(x,y,'r.-')   % 画图
    grid off; xlabel('x'); ylabel('y')                 % 去网格,xy轴标记
    text(4,0.6,'\int \geq  \otimes ');              % 标记文字
    text(5,0.5,'\neq \perp \Re');                      % 标记文字
    text(6,0.4,'\downarrow \subset  \copyright');    % 标记文字

运行程序得到如图1-19所示结果。

图1-19 特殊字符标记(2)