面向MATLAB的代码?

我正在使用面向对象的MATLAB编写大规模的应用程序,这让我想到如何记录代码。 如果这是C,我会使用Doxygen。 对于Java,我会使用JavaDoc。 对于类和方法文档应该如何显示以及它应该包含什么,两者大都已经达成了一致的标准。

但是,关于MATLAB代码呢? 我在TMW自己的课程中看到的最多的是在课程顶部的一两个简短句子,我找不到任何专门用于记录大规模MATLAB应用程序的主题。

那么如何记录你的MATLAB类? 任何特定的风格问题或其他工具?


我意识到这个问题是陈旧的,但为了Google的好处:Matlab有一个内置的功能。 你以某种风格(JavaDoc)编写你的评论,他们会被帮助和文档功能拾取。 它可以用来记录类,属性和方法。 这是令人惊讶的完整,但有点挑剔。 文档在这里:

http://www.mathworks.com/help/matlab/creating-help.html


我用以下方式记录我的oo代码:

  • 在包含'classdef'的文件的开始部分,我写了一个类的功能摘要和典型用法。 我还详细解释了属性,并为每种方法添加了1个句子的描述。
  • 在每个属性定义之后,我添加一个关于它的解释性语句(在同一行上)
  • 每种方法都被记录为一个函数,即它有一个H1行,一个简介以及对输入和输出参数的解释。
  • 当你打电话给'doc myClass'时,你会看到(1)开头,后面是你在(2)中添加的句子解释的属性列表,以及显示H1行和其余部分的方法列表帮助(3)如果你点击链接。

    另外,我所有的类都继承了一个通用的超类,它实现了调用doc(class(obj))的方法'help',这使得我可以从每个类的实例中获得帮助。

    %# MYCLASS is a sample class
    %# All this text will show up at the top of the help if you call 'doc myClassName'
    %#
    %# myClass is an example for documentation. It implements the following properties and methods:
    %# PROPERTIES
    %#    myProp - empty sample property (some more explanation could follow here)
    %#
    %# METHODS
    %#    myMethod - sample method that calls doc
    %#
    
    classdef myClass
    
    properties
        myProp = []; %# empty sample property
    end %# properties
    
    methods
    
    %%# MYMETHOD -- use %% so that you can easily navigate your class file
    function myMethod(obj)
    %#MYMETHOD calls up the help for the object
    %#
    %# SYNOPSIS myMethod(obj)
    %# INPUT obj: the object
    %# OUTPUT none
    %#
       try
          doc(class(obj))
       catch
          help(class(obj))
       end
       end %#myMethod
    end %#methods
    
    end %#myClass
    

    编辑1如果你想要一个漂亮的html文档,你可以另外使用m2html为你生成它。 M2html将收集帮助文本,甚至可以执行依赖关系图。

    编辑2虽然m2html文档标准的Matlab代码很好,但它没有对类的特定支持。 这意味着您可以将类中的子函数的方法链接到该类中,但是您不会像使用Doxygen时获得的摘要那么好,或者使用内置文档浏览器获得的摘要。


    用matlabdomain扩展名尝试Sphinx。 Sphinx是一个Python包,它使用ReStructuredText(rst)标记自动记录代码。 扩展名sphinxcontrib-matlabdomain允许MATLAB代码的自动文档,它使用Sphinx在其文档字符串中识别的第一个标记。 将错误和建议发送到BitBucket上的问题跟踪器。

    例如, my_project/my_fun.m的以下代码:

    function [outputs] = my_fun(args)
    % MY_FUN does really cool stuff
    % [OUTPUTS] = MY_FUN(ARGS)
    %
    % :param args: Input arguments
    % :type args: cell array
    % :returns: outputs
    % :raises: :exc:`my_project.InvalidInput`
    
    code ...
    end
    

    将被记录在这样的第一个文件中:

    .. _my-project
    
    My Project
    ==========
    .. automodule:: my_project
    
        This folder contains all the functions and classes for my project.
    
    My Function
    -----------
    .. autofunction:: my_fun
    

    并会生成HTML(或PDF,乳胶和其他许多),如本博客文章所示。

    链接地址: http://www.djcxy.com/p/85435.html

    上一篇: oriented MATLAB code?

    下一篇: How to exclude files from Visual Studio compile?