zoukankan      html  css  js  c++  java
  • Matlab绘制图像及图像的处理

    一 绘制函数图像

    matlab平面绘制函数图像有多个函数,plot,ezplot等。

    1.1 plot函数

    查看matlab的帮助文件可知plot函数的调用格式有

    
    

      PLOT Linear plot.

        PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
        then the vector is plotted versus the rows or columns of the matrix,
        whichever line up. If X is a scalar and Y is a vector, disconnected
        line objects are created and plotted as discrete points vertically at
        X.

        PLOT(Y) plots the columns of Y versus their index.
        If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).
        In all other uses of PLOT, the imaginary part is ignored.

        Various line types, plot symbols and colors may be obtained with
        PLOT(X,Y,S) where S is a character string made from one element
        from any or all the following 3 columns:

      b blue                       . point                           - solid
      g green                      o circle                          : dotted
      r red                        x x-mark                          -. dashdot 
      c cyan                       + plus -- dashed 
      m magenta                    * star (none) no line
      y yellow                     s square
      k black                      d diamond
      w white                      v triangle (down)
                                   ^ triangle (up)
                                   < triangle (left)
                                   > triangle (right)
                                   p pentagram
                                   h hexagram

        For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus
        at each data point; PLOT(X,Y,'bd') plots blue diamond at each data
        point but does not draw any line.

        PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by
        the (X,Y,S) triples, where the X's and Y's are vectors or matrices
        and the S's are strings.

        For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a
        solid yellow line interpolating green circles at the data points.

     

    1.2 ezplot函数 

    查看matlab的帮助文件可知plot函数的调用格式有

    EZPLOT   Easy to use function plotter
    EZPLOT(FUN) plots the function FUN(X) over the
    default domain -2*PI < X < 2*PI, where FUN(X) is an explicitly defined function of X. EZPLOT(FUN2) plots the implicitly defined function FUN2(X,Y) = 0 over the default domain -2*PI < X < 2*PI and -2*PI < Y < 2*PI. EZPLOT(FUN,[A,B]) plots FUN(X) over A < X < B. EZPLOT(FUN2,[A,B]) plots FUN2(X,Y) = 0 over A < X < B and A < Y < B. EZPLOT(FUN2,[XMIN,XMAX,YMIN,YMAX]) plots FUN2(X,Y) = 0 over XMIN < X < XMAX and YMIN < Y < YMAX. EZPLOT(FUNX,FUNY) plots the parametrically defined planar curve FUNX(T) and FUNY(T) over the default domain 0 < T < 2*PI. EZPLOT(FUNX,FUNY,[TMIN,TMAX]) plots FUNX(T) and FUNY(T) over TMIN < T < TMAX. EZPLOT(FUN,[A,B],FIG), EZPLOT(FUN2,[XMIN,XMAX,YMIN,YMAX],FIG), or EZPLOT(FUNX,FUNY,[TMIN,TMAX],FIG) plots the function over the specified domain in the figure window FIG. EZPLOT(AX,...) plots into AX instead of GCA or FIG. H = EZPLOT(...) returns handles to the plotted objects in H. Examples: The easiest way to express a function is via a string: ezplot('x^2 - 2*x + 1') One programming technique is to vectorize the string expression using the array operators .* (TIMES), ./ (RDIVIDE), . (LDIVIDE), .^ (POWER). This makes the algorithm more efficient since it can perform multiple function evaluations at once. ezplot('x.*y + x.^2 - y.^2 - 1') You may also use a function handle to an existing function. Function handles are more powerful and efficient than string expressions. ezplot(@humps) ezplot(@cos,@sin) EZPLOT plots the variables in string expressions alphabetically. subplot(1,2,1), ezplot('1./z - log(z) + log(-1+z) + t - 1') To avoid this ambiguity, specify the order with an anonymous function: subplot(1,2,2), ezplot(@(z,t)1./z - log(z) + log(-1+z) + t - 1) If your function has additional parameters, for example k in myfun: %-----------------------% function z = myfun(x,y,k) z = x.^k - y.^k - 1; %-----------------------% then you may use an anonymous function to specify that parameter: ezplot(@(x,y)myfun(x,y,2))

    注意plot函数的输入是数值的向量或者标量(也可以是多维的矩阵),而ezplot的第一个输入是函数句柄。

    二 matlab绘制图像后的标注处理

    2.1 gcf参量

    gcf  可以获取当前窗口句柄

    2.2 为x轴及y轴设置标注,为图像绘制网格线

    xlabel()及ylabel()为x轴及y轴设置标注

    另外利用 grid或者grid on来为图像绘制网格线。

    2.3 legengd为各个图线做说明

    legend()函数,查看matlab的使用帮助可知legend函数的调用格式有

     LEGEND Display legend.
        LEGEND(string1,string2,string3, ...) puts a legend on the current plot
        using the specified strings as labels. LEGEND works on line graphs,
        bar graphs, pie graphs, ribbon plots, etc.  You can label any
        solid-colored patch or surface object.  The fontsize and fontname for
        the legend strings matches the axes fontsize and fontname.
     
        LEGEND(H,string1,string2,string3, ...) puts a legend on the plot
        containing the handles in the vector H using the specified strings as
        labels for the corresponding handles.
     
        LEGEND(M), where M is a string matrix or cell array of strings, and
        LEGEND(H,M) where H is a vector of handles to lines and patches also
        works.
     
        LEGEND(AX,...) puts a legend on the axes with handle AX.
     
        LEGEND OFF removes the legend from the current axes and deletes
        the legend handle.
        LEGEND(AX,'off') removes the legend from the axis AX.
     
        LEGEND TOGGLE toggles legend on or off.  If no legend exists for the
        current axes one is created using default strings. The default
        string for an object is the value of the DisplayName property
        if it is non-empty and otherwise it is a string of the form
        'data1','data2', etc.
        LEGEND(AX,'toggle') toggles legend for axes AX
     
        LEGEND HIDE makes legend invisible.
        LEGEND(AX,'hide') makes legend on axes AX invisible.
        LEGEND SHOW makes legend visible. If no legend exists for the
        current axes one is created using default strings.
        LEGEND(AX,'show') makes legend on axes AX visible.
     
        LEGEND BOXOFF  makes legend background box invisible when legend is
        visible.
        LEGEND(AX,'boxoff') for axes AX makes legend background box invisible when
        legend is visible.
        LEGEND BOXON makes legend background box visible when legend is visible.
        LEGEND(AX,'boxon') for axes AX making legend background box visible when
        legend is visible.
     
        LEGH = LEGEND returns the handle to legend on the current axes or
        empty if none exists. 
     
        LEGEND(...,'Location',LOC) adds a legend in the specified
        location, LOC, with respect to the axes.  LOC may be either a
        1x4 position vector or one of the following strings:
            'North'              inside plot box near top
            'South'              inside bottom
            'East'               inside right
            'West'               inside left
            'NorthEast'          inside top right (default for 2-D plots)
            'NorthWest'           inside top left
            'SouthEast'          inside bottom right
            'SouthWest'          inside bottom left
            'NorthOutside'       outside plot box near top
            'SouthOutside'       outside bottom
            'EastOutside'        outside right
            'WestOutside'        outside left
            'NorthEastOutside'   outside top right (default for 3-D plots)
            'NorthWestOutside'   outside top left
            'SouthEastOutside'   outside bottom right
            'SouthWestOutside'   outside bottom left
            'Best'               least conflict with data in plot
            'BestOutside'        least unused space outside plot
        If the legend does not fit in the 1x4 position vector the position
        vector is resized around the midpoint to fit the preferred legend size.
        Moving the legend manually by dragging with the mouse or setting
        the Position property will set the legend Location property to 'none'.
     
        LEGEND(...,'Orientation',ORIENTATION) creates a legend with the
        legend items arranged in the specified ORIENTATION. Allowed
        values for ORIENTATION are 'vertical' (the default) and 'horizontal'.
     
        [LEGH,OBJH,OUTH,OUTM] = LEGEND(...) returns a handle LEGH to the
        legend axes; a vector OBJH containing handles for the text, lines,
        and patches in the legend; a vector OUTH of handles to the
        lines and patches in the plot; and a cell array OUTM containing
        the text in the legend.
     
        Examples:
            x = 0:.2:12;
            plot(x,bessel(1,x),x,bessel(2,x),x,bessel(3,x));
            legend('First','Second','Third');
            legend('First','Second','Third','Location','NorthEastOutside')
     
            b = bar(rand(10,5),'stacked'); colormap(summer); hold on
            x = plot(1:10,5*rand(10,1),'marker','square','markersize',12,...
                     'markeredgecolor','y','markerfacecolor',[.6 0 .6],...
                     'linestyle','-','color','r','linewidth',2); hold off
            legend([b,x],'Carrots','Peas','Peppers','Green Beans',...
                      'Cucumbers','Eggplant')

    2.4 text函数在图像某点做标注


    查看text函数在matlab中的使用帮助

     TEXT   Text annotation.
        TEXT(X,Y,'string') adds the text in the quotes to location (X,Y)
        on the current axes, where (X,Y) is in units from the current
        plot. If X and Y are vectors, TEXT writes the text at all locations
        given. If 'string' is an array the same number of rows as the
        length of X and Y, TEXT marks each point with the corresponding row
        of the 'string' array.
     
        TEXT(X,Y,Z,'string') adds text in 3-D coordinates.
     
        TEXT returns a column vector of handles to TEXT objects, one
        handle per text object. TEXT objects are children of AXES objects.
     
        The X,Y pair (X,Y,Z triple for 3-D) can be followed by 
        parameter/value pairs to specify additional properties of the text.
        The X,Y pair (X,Y,Z triple for 3-D) can be omitted entirely, and
        all properties specified using parameter/value pairs.
     
        Execute GET(H), where H is a text handle, to see a list of text
        object properties and their current values. Execute SET(H) to see a
        list of text object properties and legal property values.

    例如

    plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))
    text(pi,0,' leftarrow sin(pi)','FontSize',18)

    得到的图像为

    2.5 设置使绘制的图像窗口不显示

    set(h,'visible','off');其中h可以是图像的函数句柄,也可以是数字1,2(当前图像的名字是figure(1)就是1,反之figure(2)就是2)
    要设置图像显示  set(h,'visible','on')
    h=figure(1);
    x=0:0.01:1;
    y=sin(x);
    plot(x,y);
    set(h,'visible','off'); 
    

     2.6 设置使绘制的图像工具栏不显示

    figure('menubar','none');可去掉菜单栏

    可以在打开你的m文件之后,在Matlab的命令行输入以下指令来恢复显示Scope的Figure菜单栏: 

    >> set(0,'ShowHiddenHandles','on');  

    >> set(gcf,'menubar','figure')

    2.7 绘制的图像自动保存

    2.7.1 saveas命令

    查看saveas命令的matlab帮助

     SAVEAS Save Figure or Simulink block diagram in desired output format
        SAVEAS(H,'FILENAME')
        Will save the Figure or Simulink block diagram with handle H to file 
        called FILENAME. 
        The format of the file is determined from the extension of FILENAME.
     
        SAVEAS(H,'FILENAME','FORMAT')
        Will save the Figure or Simulink block diagram  with handle H to file 
        called FILENAME in the format specified by FORMAT. FORMAT can be the 
        same values as extensions of FILENAME. 
        The FILENAME extension does not have to be the same as FORMAT.  
        The specified FORMAT overrides FILENAME extension.
     
        Valid options for FORMAT are:
     
        'fig'  - save figure to a single binary FIG-file.  Reload using OPEN. 
        'm'    - save figure to binary FIG-file, and produce callable
                 M-file for reload.
        'mfig' - same as M.
        'mmat' - save figure to callable M-file as series of creation commands 
                 with param-value pair arguments.  Large data is saved to MAT-file.
                 Note: MMAT Does not support some newer graphics features. Use
                       this format only when code inspection is the primary goal.
                       FIG-files support all features, and load more quickly. 

    saveas的三个参数:(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.可以用gcf参量抓取当前图像句柄。

                              (2)文件名。是字符串。

                              (3)单引号字符串,指定存储格式。

    实际上可以只输入两个参量,利用文件名直接强制转换成我们想要的图片格式,例如

    saveas(gcf,['D:MATLAB7work','mypicture','.jpg']);

    或者直接

    saveas(gcf,'D:MATLAB7workmypicture.jpg');

    2.7.2 print命令

    print命令本来是matlab用来打开打印机的命令,也可以用来保存图像。

    print的三个参数:(1)图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.用gcf可以获取当前窗口句柄。

                            (2)单引号字符串,指定存储格式。

                                   png格式:'-dpng'

                                   jpeg:    '-djpeg',

                                   tiff: '-dtiff'

                                   bmp: '-dbitmap'

                             (3)文件名。

     例如

    >> x=-pi:2*pi/300:pi; 
    >> y=sin(x);
    >> plot(x,y);
    >> print(gcf,'-dpng','abc.png') % 保存为png格式的图片。

      >> figure(2)     %新建一个句柄为2的图形窗口。

      >> plot(x,cos(x));    %在句柄为2的图形窗口上画图。

      >> grid 

      >> print(2,'-djpeg','C:abc.jpeg'); %将句柄为2的图形保存为jpeg/jpg格式的图片,文件名为'C:abc.jpeg'。

     

  • 相关阅读:
    java 中for each语句
    设备树使用手册
    Java中 final static super this instanceof 关键字用法
    Java 抽象类与oop三大特征
    Views的补充
    Form表单组件验证
    django信号相关
    缓存实例
    自定义django中间件
    【主机管理项目】-(路由表)
  • 原文地址:https://www.cnblogs.com/MarshallL/p/4056244.html
Copyright © 2011-2022 走看看