zoukankan      html  css  js  c++  java
  • 如何规范地编写一个MATLAB函数文件

    在matlab中,M文件分为脚本文件和函数文件。如果M文件的第一个可执行语句以function开头,那这个M文件就是函数文件。函数文件内定义的变量为局部变量,只在函数文件内部起作用,当函数文件执行完后,这些内部变量将被清除。

    本文介绍如何规范地编写一个函数文件。

    通常,函数文件由函数声明行、H1行、在线帮助文本区、编写和修改记录、函数主体等几个部分组成。格式如下:

    function 输出形参表 = 函数名(输入形参表)

    在线帮助文本区,其中第一行为H1行

    编写和修改记录

    函数主体


    函数声明行

    1. 由关键字function引导,指明这是一个函数文件,并定义函数名、输入参数和输出参数。
    2. 函数名应当与文件名一致(保存函数文件时会默认以函数名作为文件名予以保存),如果两者不一致,MATLAB将以文件名为准,以后调用时使用文件名调用该函数。
    3. 在脚本文件中编写函数时,需以end结尾;独立的函数文件不需以end结尾。
    4. MATLAB中的函数文件名必须以字母开头,可以是字母、下划线、数字的任意组合,但不可以超过31个字符。

    H1行

    1. 紧随函数声明行之后的以“%”开头的第一注释行。
    2. H1行包括大写的函数名和函数功能简要描述,采用lookfor命令可在命令行窗口显示H1行的信息。
    3. 建议在编写H1注释行时,尽量采用英文表述,这是为了之后的使用过程中关键词检索的方便。

    在线帮助文本区

    1. 包括H1行以及H1行之后的连续的以“%”开头的注释行。
    2. 通常包括函数输入变量和输出变量的含义以及调用说明。
    3. 采用help命令可在命令行窗口显示在线帮助文本区的信息。

    编写和修改记录

    1. 与在线帮助文本区以一个空行相隔。
    2. 该行以“%”开头,记录了编写及修改函数文件的作者、日期、版本等内容,以方便后来的使用查询或修改。

    函数主体

    1. 应与编写和修改记录以一个空行相隔。
    2. 这部分内容包括了所有实现该函数文件功能的MATLAB指令。

    例:完整的函数文件示范。

     1 function spir_len = spirallength(d, n, lcolor)
     2 % SPIRALLENGTH plot a circle of radius as r in the provided color and calculate its area 
     3 % 输入参数: 
     4 %   d: 螺旋的旋距
     5 %   n: 螺旋的圈数
     6 %   lcolor:画图线的颜色
     7 % 输出参数:
     8 %   spir_len:螺旋的周长
     9 % 调用说明:
    10 %   spirallength(d,n):以参数d,n画螺旋线,螺旋线默认为蓝色
    11 %   spirallength(d,n,lcolor):以参数d,n,lcolor画螺旋线
    12 %   spir_len = spirallength(d,n):计算螺旋线的周长,并以蓝色填充螺旋线
    13 %   spir_len = spirallength(d,n,lcolor):计算螺旋线的周长,并以lcolor颜色填充螺旋线
    14  
    15 % 版本号V1.0,编写于1999年9月9号,修改于1999年9月10号,作者:亚索
    16  
    17 if nargin > 3
    18     error('输入变量过多!');
    19 elseif nargin == 2
    20     lcolor = 'b'; % 默认情况下为蓝色
    21 end
    22  
    23 j = sqrt(-1); 
    24 phi = 0 : pi/1000 : n*2*pi; 
    25 amp = 0 : d/2000 : n*d; 
    26 spir = amp .* exp(j*phi); 
    27  
    28 if nargout == 1
    29     spir_len = sum(abs(diff(spir))); 
    30     fill(real(spir), imag(spir), lcolor); 
    31 elseif nargout == 0
    32     plot(spir, lcolor); 
    33 else
    34     error('输出变量过多!'); 
    35 end
    36  
    37 axis('square'); 

    在命令行窗口中输入:

    1 spirallength(0.25,4)

    输出结果如图:

     在命令行窗口输入:

    1 spir_len = spirallength(0.25,4)

    输出的结果不仅包括上图,而且还在命令行窗口显示spir_len=12.6542。


    函数参数指令集

    • nargin:表示一个变量,指定调用函数所带参数的个数
    • nargout:表示一个变量,指定调用函数所返回的参数的个数

    本文完。

    1.编写test函数

     1 function [o,p,q,r] = test( n )%%%%%%%%%%%%%%%编写function test函数
     2 
     3 %%%%%%%%%%%%%%%%%%%%%%test函数变量为n,返回值为o,p,q,r
     4 
     5 o= 0;
     6 p=0;
     7 q=6;
     8 r=128;
     9 for i = 1:n
    10     o = o + i;
    11     p=p+1;
    12     q=q.*n
    13     r=r.^0.2
    14     
    15 
    16 end

    2.调用tset函数的main函数

    1 clear all;
    2 clear clc;
    3 [a,b,q,r]= test(10)%%%%%%%%%%%%%%%%%%调用test函数n=10,a,b,q,r四个为n=10的test函数的返回值!

    参考网址:(如何规范地编写一个MATLAB函数文件)https://blog.csdn.net/qq_15971883/article/details/82884353

            (matlab中如何定义函数)https://jingyan.baidu.com/article/4e5b3e1954ed9c91901e240b.html

         (matlab基础:函数FUNCTION编写)https://blog.csdn.net/qq_15971883/article/details/82884353

         (Matlab创建文件、function文件和函数调用)https://blog.csdn.net/Netceor/article/details/95063340?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param#%E4%B8%89%E3%80%81%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0

     

  • 相关阅读:
    vue.js环境的搭建
    图片上传简单demo及springboot上传图片
    mybatise 模糊查询
    thymeleaf th:onclick 传参
    thymeleaf的特殊属性赋值
    无限分类的设计及前后台代码
    mysql 多个属性排序查询
    java添加对象成功后想知道当前添加对象的id
    SpringBoot2.x集成MQTT实现消息推送
    linux下安装MQTT服务器
  • 原文地址:https://www.cnblogs.com/chuqianyu/p/13438953.html
Copyright © 2011-2022 走看看