如何查看MATLAB函数的源代码

本文介绍如何使用MATLAB内置命令'type'查看特定函数的源代码,通过实例展示查看'imread'函数的具体内容,包括其功能说明、参数用法及支持的文件格式等。

如何查看MATLAB函数的源代码

   大家都知道MATLAB是开源的,所有的函数源代码都是可以查看的。但是,对于初学者来说,可能还不知道如何查看MATLAB函数的源代码。

函数之  type

   假设需要查看function_name的源代码,在命令窗口中键入 type  function_name  

即:

>> type imread

function [X, map, alpha] = imread(varargin)
%IMREAD Read image from graphics file.
%   A = IMREAD(FILENAME,FMT) reads a grayscale or color image from the file
%   specified by the string FILENAME. If the file is not in the current
%   directory, or in a directory on the MATLAB path, specify the full
%   pathname.
%  
%   The text string FMT specifies the format of the file by its standard
%   file extension. For example, specify 'gif' for Graphics Interchange
%   Format files. To see a list of supported formats, with their file
%   extensions, use the IMFORMATS function. If IMREAD cannot find a file
%   named FILENAME, it looks for a file named FILENAME.FMT.
%
%   The return value A is an array containing the image data. If the file
%   contains a grayscale image, A is an M-by-N array. If the file contains
%   a truecolor image, A is an M-by-N-by-3 array. For TIFF files containing
%   color images that use the CMYK color space, A is an M-by-N-by-4 array.
%   See TIFF in the Format-Specific Information section for more
%   information.
%  
%   The class of A depends on the bits-per-sample of the image data,
%   rounded to the next byte boundary. For example, IMREAD returns 24-bit
%   color data as an array of uint8 data because the sample size for each
%   color component is 8 bits. See the Remarks section for a discussion of 
%   bitdepths, and see the Format-Specific Information section for more 
%   detail about supported bitdepths and sample sizes for a particular
%   format.
%   
%   [X,MAP] = IMREAD(FILENAME,FMT) reads the indexed image in FILENAME into
%   X and its associated colormap into MAP. Colormap values in the image
%   file are automatically rescaled into the range [0,1].
%
%   [...] = IMREAD(FILENAME) attempts to infer the format of the file
%   from its content.
%
%   [...] = IMREAD(URL,...) reads the image from an Internet URL. 
%   
%   Remarks
%   
%   Bitdepth is the number of bits used to represent each image pixel. 
%   Bitdepth is calculated by multiplying the bits-per-sample with the
%   samples-per-pixel. Thus, a format that uses 8-bits for each color
%   component (or sample) and three samples per pixel has a bitdepth of 24.
%   Sometimes the sample size associated with a bitdepth can be ambiguous:
%   does a 48-bit bitdepth represent six 8-bit samples or three 16-bit
%   samples? The following format-specific sections provide sample size
%   information to avoid this ambiguity.
%   
%   Format-Specific Information (Listed Alphabetically by Format)
%  
%   BMP  --  Windows Bitmap
%
%   Supported  Compression     Output  
%   Bitdepths  None    RLE     Class    Notes
%   ---------------------------------------------------------
%    1-bit      x        -     logical 
%    4-bit      x        x     uint8         
%    8-bit      x        x     uint8
%   16-bit      x        -     uint8    1 sample/pixel
%   24-bit      x        -     uint8    3 samples/pixel
%   32-bit      x        -     uint8    3 samples/pixel (1 byte padding)
%      
%   CUR  -- Cursor File

%   Supported    Compression      Output
%   Bitdepths   None Compressed   Class 
%   --------------------------------------------------
%   1-bit        x      -         logical
%   4-bit        x      -         uint8         
%   8-bit        x      -         uint8
%  
%   Special syntaxes:
%  
%   [...] = IMREAD(...,IDX) reads in one image from a multi-image icon or
%   cursor file. IDX is an integer value that specifies the order that the
%   image appears in the file. For example, if IDX is 3, IMREAD reads the
%   third image in the file. If you omit this argument, IMREAD reads the
%   first image in the file.
%
%   [A,MAP,ALPHA] = IMREAD(...) returns the AND mask for the resource,
%   which can be used to determine transparency information.  For cursor
%   files, this mask may contain the only useful data.   
%    
%   GIF  --  Graphics Interchange Format
%  
%   Supported     Compression        Output
%   Bitdepths    None  Compressed    Class 
%   ---------------------------------------------
%   1-bit         x        -         logical
%   2-to-8 bit    x        -         uint8  
%  
%   Special syntaxes:
%  
%   [...] = IMREAD(...,IDX) reads in one or more frames from a multiframe
%   (i.e., animated) GIF file. IDX must be an integer scalar or vector of
%   integer values.  For example, if IDX is 3, IMREAD reads the third image
%   in the file.  If IDX is 1:5, only the first five frames are returned.
%
%   [...] = IMREAD(...,'Frames',IDX) is the same as the syntax above except
%   that IDX can be 'all'.  In this case, all of the frames are read and
%   returned in the order that they appear in the file.
%
%   Note: Because of the way GIF files are structured, all of the frames
%   must be read when a particular frame is requested. Consequently, it is
%   much faster to specify a vector of frames or 'all' for IDX than to call
%   IMREAD in a loop when reading multiple frames from the same GIF file.
%  
%   HDF  --  Hierarchical Data Format
%    
%   Supported   Raster image   Raster image     Output
%   Bitdepths   with colormap  without colormap Class    Notes
%   ------------------------------------------------------------
%    8-bit        x               x             uint8
%   24-bit        -               x             uint8   3 samples/pixel
%  
%   Special Syntaxes:
%  
%   [...] = IMREAD(...,REF) reads in one image from a multi-image HDF file.
%   REF is an integer value that specifies the reference number used to
%   identify the image. For example, if REF is 12, IMREAD reads the image
%   whose reference number is 12. (Note that in an HDF file the reference
%   numbers do not necessarily correspond with the order of the images in
%   the file. You can use IMFINFO to match up image order with reference
%   number.) If you omit this argument, IMREAD reads the first image in
%   the file.
%    
%   ICO  -- Icon File
%  
%   See CUR.
%  
%   JPEG  --  Joint Photographic Experts Group
%  
%   Note: IMREAD can read any baseline JPEG image as well as JPEG images
%   with some commonly used extensions.
%  
%   Supported    Compression      Output
%   Bitdepths   Lossy Lossless    Class      Notes
%   --------------------------------------------------------
%    8-bit        x      x        uint8     Grayscale or RGB
%   12-bit        x      x        uint16    Grayscale 
%   16-bit        -      x        uint16    Grayscale
%   36-bit        x      x        uint16    RGB(Three 12-bit samples/pixel)
%
%   JPEG 2000 - Joint Photographic Experts Group 2000
%
%   Supported      Compression      Output
%   Bitdepths     Lossy Lossless    Class  
%   (per sample)
%   ----------------------------------------------------------
%    1-bit          x      x        logical
%    2- to 8-bit    x      x        uint8
%    9- to 16-bit   x      x        uint16
%
%   Note: Indexed JPEG 2000 images are not supported. Only JP2 compatible
%   color spaces are supported for JP2/JPX files. Arbitrary channels are
%   supported for raw codestream J2C files.
%
%   Special Syntaxes
%
%   [...] = IMREAD(..., 'Param1', value1, 'Param2', value2, ...) uses
%   parameter-value pairs to control the read operation. 
%
%       Parameter name   Value
%       --------------   -----
%       'ReductionLevel' A non-negative integer specifying reduction in 
%                        the resolution of the image. For a reduction
%                        level 'L', the image resolution is reduced by a
%                        factor of 2^L. Its default value is 0 implying
%                        no reduction. The reduction level is limited by
%                        the total number of decomposition levels as 
%                        provided by 'WaveletDecompositionLevels' field 
%                        in the structure returned from IMFINFO function.  
%
%       'PixelRegion'    {ROWS, COLS}.  IMREAD returns the sub-image
%                        specified by the boundaries in ROWS and COLS.
%                        ROWS and COLS must both be two-element vectors
%                        that denote the 1-based indices [START STOP]. If
%                        'ReductionLevel' is greater than 0, then ROWS and
%                        COLS are coordinates in the reduced-sized image.  
%
%       'V79Compatible'  A BOOL value. If true, image returned is color
%                        converted to gray-scale or RGB image as consistent
%                        with previous versions of IMREAD (MATLAB 7.9
%                        [R2009b] and earlier). Otherwise raw color
%                        image is returned. Default is false.
%
%
%   PBM  --  Portable Bitmap
%  
%   Supported  Raw     ASCII (Plain)  Output
%   Bitdepths  Binary  Encoded        Class
%   ----------------------------------------
%   1-bit        x        x          logical
%     
%   PCX  --  Windows Paintbrush

%   Supported     Output   
%   Bitdepths     Class       Notes
%   ----------------------------------------------
%    1-bit        logical     Grayscale only
%    8-bit        uint8       Grayscale or indexed
%   24-bit        uint8       RGB (8-bit samples)
%   
%   PGM  --  Portable Graymap
%       
%   Supported        Raw      ASCII (Plain)  Output       
%   Bitdepths        Binary   Encoded        Class
%   ------------------------------------------------
%   up to 16-bit      x            -         uint8
%   Arbitrary         -            x
%   
%   PNG  --  Portable Network Graphics
%  
%   Supported     Output   
%   Bitdepths     Class      Notes
%   -------------------------------------------
%    1-bit        logical    Grayscale only
%    2-bit        uint8      Grayscale only
%    4-bit        uint8      Grayscale only
%    8-bit        uint8      Grayscale or Indexed
%   16-bit        uint16     Grayscale or Indexed
%   24-bit        uint8      RGB (Three 8-bit samples/pixel)
%   48-bit        uint16     RGB (Three 16-bit samples/pixel)
%        
%   Special Syntaxes:
%  
%   [...] = IMREAD(...,'BackgroundColor',BG) composites any transparent
%   pixels in the input image against the color specified in BG.  If BG is
%   'none', then no compositing is performed. Otherwise, if the input image
%   is indexed, BG should be an integer in the range [1,P] where P is the
%   colormap length. If the input image is grayscale, BG should be an
%   integer in the range [0,1].  If the input image is RGB, BG should be a
%   three-element vector whose values are in the range [0,1]. The string
%   'BackgroundColor' may be abbreviated. 
%
%   If the ALPHA output argument is used (see below), then BG defaults to
%   'none' if not specified by the user. Otherwise, if the PNG file
%   ontains a background color chunk, that color is used as the default 
%   value for BG. If ALPHA is not used and the file does not contain a
%   background color chunk, then the default value for BG is 1 for indexed 
%   images; 0 for grayscale images; and [0 0 0] for RGB images. 
%
%   [A,MAP,ALPHA] = IMREAD(...) returns the alpha channel if one is
%   present; otherwise ALPHA is []. If 'BackgroundColor' is specified by
%   the user then ALPHA is []. Note that MAP may be empty if the file
%   contains a grayscale or truecolor image.   
%    
%   PPM  --  Portable Pixmap
%  
%   Supported        Raw      ASCII (Plain)  Output       
%   Bitdepths        Binary   Encoded        Class
%   ------------------------------------------------
%   up to 16-bit      x            -         uint8
%   Arbitrary         -            x    
%  
%   RAS  --  Sun Raster
%  
%   Supported    Output   
%   Bitdepths    Class     Notes
%   ----------------------------------------------------
%    1-bit       logical   Bitmap 
%    8-bit       uint8     Indexed
%   24-bit       uint8     RGB (8-bit samples)
%   32-bit       uint8     RGB with Alpha (8-bit samples)
%   
%   TIFF  --  Tagged Image File Format
%  
%   Supported     Compression                             Output    
%   Bitdepths None Packbits CCITT RGB ICCLAB CIELAB CMYK Class    Notes
%   -----------------------------------------------------------------------
%    1-bit     x      x       x    -    -      -     -   logical 
%    8-bit     x      x       -    -    -      -     -   uint8
%   12-bit     -      -       -    -    -      -     -   uint16  Grayscale
%                                                                or Indexed
%   16-bit     -      -       -    -    -      -     -   uint16  Grayscale
%                                                                or Indexed
%   24-bit     x      x       -    x    x      x     -   uint8   3 samples
%   32-bit     -      -       -    -    -      -     x   uint8   4 samples
%   36-bit     -      -       -    x    -      -     -   uint16  3 samples
%   48-bit     -      -       -    x    x      x     -   uint16  3 samples     
%   64-bit     -      -       -    -    -      -     x   double  4 samples
%  
%   NOTE: IMREAD supports 8-bit integral and 32-bit floating point tiled
%   TIFF images, with any compression and colorspace combination listed
%   above, and 32-bit IEEE floating point images.
%  
%   Special Syntaxes:
%  
%   A = IMREAD(...) returns color data that uses the RGB, CIELAB, ICCLAB,
%   or CMYK color spaces.  If the color image uses the CMYK color space, A
%   is an M-by-N-by-4 array.
%
%   [...] = IMREAD(..., 'Param1', value1, 'Param2', value2, ...) uses
%   parameter-value pairs to control the read operation.  There are three
%   different parameters you can use:
%
%       Parameter name   Value
%       --------------   -----
%       'Index'          A positive integer specifying which image to read in
%                        a multi-image TIFF file.  For example, if 'Index' is
%                        3, IMREAD reads the third image in the file.
%
%       'Info'           A structure array; the output of IMFINFO.  When
%                        reading images from a multi-image TIFF file, passing
%                        the output of IMFINFO as the 'Info' parameter helps
%                        IMREAD locate the images in the file more quickly.
%
%       'PixelRegion'    {ROWS, COLS}.  IMREAD returns the sub-image
%                        specified by the boundaries in ROWS and COLS.  ROWS
%                        and COLS must be either two- or three-element
%                        vectors.  If two elements are provided, they denote
%                        the 1-based indices [START STOP].  If three elements
%                        are provided, the indices [START INCREMENT STOP]
%                        allow image downsampling.
%  
%   XWD  --  X Window Dump
%  
%   Supported                                  Output   
%   Bitdepths  ZPixmaps  XYBitmaps  XYPixmaps  Class
%   --------------------------------------------------
%   1-bit        x          -         x        logical
%   8-bit        x          -         -        uint8
%
%   Please read the file libtiffcopyright.txt for more information.
%
%   Example:
%
%       imdata = imread('ngc6543a.jpg');
%
%   See also IMFINFO, IMWRITE, IMFORMATS, FREAD, IMAGE, DOUBLE, UINT8.

%   Copyright 1984-2011 The MathWorks, Inc.
%   $Revision: 1.1.6.22.4.1 $  $Date: 2012/07/02 18:58:54 $

[filename, fmt_s, extraArgs] = parse_inputs(varargin{:});

% Download remote file.
if (strfind(filename, '://'))
 
    url = true;
 
    if (~usejava('jvm'))
        error(message('MATLAB:imagesci:imread:noJava'))
    end
   
    try
        filename = urlwrite(filename, tempname);
    catch %#ok<*CTCH>
        error(message('MATLAB:imagesci:imread:readURL', filename));
    end
   
else
 
    url = false;

end

if (isempty(fmt_s))
    % The format was not specified explicitly.
   
    % Verify that the file exists.
    fid = fopen(filename, 'r');
    if (fid == -1)
     
        if ~isempty(dir(filename))
            error(message('MATLAB:imagesci:imread:fileReadPermission', filename));
        else
            error(message('MATLAB:imagesci:imread:fileDoesNotExist', filename));
        end

    else
        % File exists.  Get full filename.
        filename = fopen(fid);
        fclose(fid);
    end
   
    % Try to determine the file type.
    [format, fmt_s] = imftype(filename);

    if (isempty(format))
        error(message('MATLAB:imagesci:imread:fileFormat'));
    end
   
else
    % The format was specified explicitly.
   
    % Verify that the file exists.
    fid = fopen(filename, 'r');
    if (fid == -1)
        % Couldn't open using the given filename; search for a
        % file with an appropriate extension.
        for p = 1:length(fmt_s.ext)
            fid = fopen([filename '.' fmt_s.ext{p}]);
           
            if (fid ~= -1)
                % The file was found.  Don't continue searching.
                break
            end
        end
    end
   
    if (fid == -1)
        if ~isempty(dir(filename))
            error(message('MATLAB:imagesci:imread:fileReadPermission', filename));
        else
            error(message('MATLAB:imagesci:imread:fileDoesNotExist', filename));
        end
    else
        filename = fopen(fid);
        fclose(fid);
    end
   
end

if isempty(fmt_s)
    % Get format details.
    fmt_s = imformats(format);
end

% Verify that a read function exists
if (isempty(fmt_s.read))
    error(message('MATLAB:imagesci:imread:readFunctionRegistration', fmt_s.ext{ 1 }));
end

if ((fmt_s.alpha) && (nargout == 3))
 
    % Use the alpha channel.
    [X, map, alpha] = feval(fmt_s.read, filename, extraArgs{:});
   
else

    % Alpha channel is not requested or is not applicable.
    alpha = [];
    [X, map] = feval(fmt_s.read, filename, extraArgs{:});
   
end

% Delete temporary file from Internet download.
if (url)
    delete_download(filename);
end

 

%--------------------------------------------------------------------------
function delete_download(filename)

try
    delete(filename);
catch
    warning(message('MATLAB:imagesci:imread:tempFileDelete', filename))
end


     

%--------------------------------------------------------------------------
function [filename, fmt_s, extraArgs] = parse_inputs(varargin)

filename = '';
fmt_s = struct([]);
extraArgs = {};

% Parse arguments based on their number.
switch(nargin)
case 0

    % Not allowed.
    error(message('MATLAB:imagesci:imread:inputParsing'));
   
case 1

    % Filename only.
    filename = varargin{1};
    if ~ischar(filename)
        error(message('MATLAB:imagesci:imread:badImageSourceDatatype'));
    end
   
otherwise

    % Filename and format or other arguments.
    filename = varargin{1};
   
    % Check whether second argument is a format.
    if (ischar(varargin{2}))
        fmt_s = imformats(varargin{2});
    end
   
    if (~isempty(fmt_s))
        % The argument matches a format.
        extraArgs = varargin(3:end);
    else
        % The argument begins the format-specific parameters.
        extraArgs = varargin(2:end);
    end
   
end

>>

 

 

 

 

 

部分资源展示: MATLAB建模 人口增长模型 源程序代码 MATLAB求解非线性方程组 fsolve源程序代码 MATLAB设计的简单滤波器程序源代码 MATLAB生成Gif图片程序源代码 MATLAB实现不同插值方法的GUI界面设计 源程序代码 MATLAB实现灰度预测模型的源代码 MATLAB实现偏微分方程的差分计算 源程序代码 MATLAB实现图像去噪 滤波 锐化 边缘检测 MATLAB实现线性拟合和相关系数 源程序代码 MATLAB实现学生成绩查询系统 源代码程序 MATLAB DCT水印源程序代码 MATLAB GUI实现动态画图曲线的源程序代码 MATLAB光通过三稜镜色散动画 MATLAB绘制 维维安尼Viviani曲线 源代码程序 MATLAB霍夫曼Huffman编码译码GUI界面设计 源程序代码 MATLAB计算粒子速度分布 源程序代码 MATLAB建模 人口增长模型 源程序代码 MATLAB求解非线性方程组 fsolve源程序代码 MATLAB设计的简单滤波器程序源代码 MATLAB生成Gif图片程序源代码 MATLAB实现不同插值方法的GUI界面设计 源程序代码 MATLAB实现灰度预测模型的源代码 MATLAB实现偏微分方程的差分计算 源程序代码 MATLAB实现图像去噪 滤波 锐化 边缘检测 MATLAB实现线性拟合和相关系数 源程序代码 MATLAB实现学生成绩查询系统 源代码程序 MATLAB使用欧拉Euler法求解微分方程组 源程序代码 MATLAB图像处理实现螺纹识别 源程序代码 MATLAB图像处理实现直线识别(拟合角平分线) MATLAB文字连通域源程序代码 MATLAB寻找素数的源程序代码 MATLAB夜间车牌识别程序 MATLAB中colorbar的设置 源程序代码 MATLAB中的基本语法和语句示例代码 等等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值