转载自https://blog.csdn.net/pitt_xiong/article/details/8071189

1题、自然数n的阶乘
function y=lilu_fact(n)
n=floor(n);%如果是小数,向下取整至整数
y=1; 
if n>1  %这里负数,0的阶乘都将得到1
    for i=1:n
        y=y*i;
    end
end
2题、n中取m的组合
function y=lilu_cnm(n,m)
y=1;
if (n>=m && n>=0 & m>=0)
    m=min(n-m,m);
    for i=1:m
        y=y*(n-i+1)/i;
    end
end
3题、已知任意两个多项式(不一定同阶)的系数,求两个多项式的和
function y=lilu_polyadd(x1,x2)
%多项式低次放在最前面,升序排列
%比如x1=[1,2,3]代表1+2*x+3*x^2
n1=length(x1);
n2=length(x2);
n=min(n1,n2);
y=[];
for i=1:n
    y=[y,x1(i)+x2(i)];
end
if (n==n1)
    for i=n+1:n2
        y=[y,x2(i)];
    end
else
    for i=n+1:n1
        y=[y,x1(i)];
    end
end
M文件编程
MATLAB 作为一种应用广泛的科学计算软件,不仅可以通过直接交互的指令和操作方式进行强大的数值计算、绘图等,还可以像 C、C++ 等高级程序语言一样,根据自己的语法规则来进行程序设计。编写的程序文件以 .m 作为扩展名,称之为M文件。通过编写M文件,用户可以像编写批处理命令一样,将多个MATLAB命令集中在一个文件中,既能方便地进行调用,又便于修改;还可以根据用户自身的情况,编写用于解决特定问题的M文件,这样就实现了结构化程序设计,并降低代码重用率。实际上,MATLAB 自带的许多函数就是M函数文件。MATLAB 提供的编辑器可以使用户方便地进行M文件的编写。
M文件通用格式及分类
简单地说,M文件就是用户把要实现的命令写在一个以 .m作为文件扩展名的文件中,然后由MATLAB系统进行解释,运行出结果,实际上M文件是一个命令集,因此,MATLAB具有强大的可开发性与可扩展性。MATLAB中的许多函数本身都是由M文件扩展而成的,而用户也可以利用M文件来生成和扩充自己的函数库。
下面给出一个M文件的代码,简单介绍M文件的基本组成部分。
function f = fact(n)                               % 函数定义行
% FACT Factorial.                             %  H1行
% FACT (N) returns the factorial of N,H!         % 帮助文件文本
% usually denoted by N!
% Put simply ,FACT(N) is PROD(1,N).
f = prod(1,n);                                    % 函数体
M 文件由以下四部分组成。
●函数定义行:定义了函数的名称、输入/输出变量的数目和顺序。
●帮助信息行:代表帮助文件的第一行,即代表了帮助文件的简要信息。
●帮助文件文本:当一个函数使用帮助命令时,MATLAB 将会形成帮助信息行和帮助文件文本。
●函数体:函数功能的实现部分,用于实际计算、功能实现和对输出变量进行赋值。
M 文件有两种类型:M 脚本文件(M-Script)和M 函数文件(M-Function)。它们的扩展名相同,都是“.m”。M 脚本文件中包含一组有MATLAB语言所支持的语句,类似于 DOS 下的批处理文件。执行方式也非常简单,用户只需要在MATLAB的提示符下输入该M文件的文件名,MATLAB 就会自动执行该M文件的各条语句,并将结果直接返回到MATLAB的工作空间。在运行过程中产生的所有变量都是全局变量。
脚本文件与函数文件的区别在于脚本文件没有函数定义行,且一般没有注释信息,当然也可以添加注释信息,即以 % 开头的内容。在使用方法、变量生存周期中也存在差异,如表1-8所示。
脚本文件与函数文件的区别
比较 项 目
M脚本文件
M函数文件
输入/输出参数
不接收输入参数,也不返回输出参数
接收输入参数,也可以返回参数
变量情况
处理工作空间中的变量
默认内部变量为局部变量,工作区间不能访问
适用情况
常用于需多次执行的一系列命令
常用于需多次执行且需要输入/输出参数的命令集合,常作为MATLAB应用程序的扩展编程使用
脚本文件和函数文件适用于不同的情况,有时需要把脚本文件转换为函数文件。转换方法实际上非常简单,只需要在脚本文件前面添加必要的函数定义行和注释信息(可以省略)即可。
M文件编辑器
        M文件的编辑和调试是在 MATLAB的M文件编辑器(M-fileEditor)中进行的,若需要对M文件进行调试,还需要 MATLAB运行环境的支持,该编辑器既为基本文本文件的编辑提供了图形用户界面,又可以用于其他文本文件的编辑,同时还可以进行M文件的调试工作。可以在下面的情况下启动M文件编辑器。
●创建一个新的M文件时,可以启动M文件编辑器,方法是:File→ New → M- File。
●使用编辑器/调试器打开一个已经存在的M文件。
●不启动 MATLAB,只打开编辑器,由于这个时候没有MATLAB环境的支持,不能对M文件进行调试。
M函数文件
M函数文件与M脚本文件是不同的,它可以接收输入变量,也可以返回输出变量,接下来看一个简单的M函数文件的例子:
Function y = ave(x)
% AVERAGE Mean of vector elements.
% AVERAGE(X), where X is a vector, is themean of vector elements.
% Nonvector input results in an error .
[m,n]=size(x);
if (~((m==1)|(n==1))|(m==1& n==1))
 error(‘input must be a bector’)
end
y = sum (x)/length(x);
该函数以文件名ave.m保存,用于计算一个向量中所有元素的平均值,有一个输入变量和一个输出变量。执行该函数可以通过执行以下操作:
>> a=1:2:100;
>> ave(a)
可以得到计算向量a的平均值的结果:
ans =
   50
M函数文件的组成部分
一个M函数文件由以下几部分组成:
●函数定义行
●函数信息行
●帮助文件文本
●函数体
●注释行
(1) 函数定义行:定义了函数名称、输入和输出变量信息。函数名以字母开头,由数字、字母或下划线组成。为了便于代码在不同平台间转移,一般使用小写字母。调用该函数文件只需要在命令行输入函数名即可。若函数有多个输出变量,则用中括号将他们括起来,若有多个输入变量则使用小括号将他们括起来。
Function [x, y, z]=sphere(theta, phi, rho)
如果没有变量输出,则将输出部分省去或者使用空的中括号。
(2) 函数信息行:又称为H1行,是紧跟在函数定义行后的一个注释行,以百分号开头。
% AVERAGE Mean of vector elements.
H1行用于指示当前函数的功能,代表了帮助文件的简要信息。当用户使用help命令来查看函数时,H1行和帮助文本就会显示出来。
(3) 函数体:M文件的主体部分,由一系列MATLAB命令组成,通过它实现函数的功能。
(4) 注释行:在函数体中起解释作用,也以百分号开头。
编写M文件需要注意的问题
在编写M文件时,应当注重M文件的正确性、规范性和通用性。
(1) 函数名和函数文件名必须相同。例如,函数avg就存储在avg.m文件中。
(2) 变量的名字最好能够反映它们的意义,这一点对于一般语言程序设计都是适用的。
(3) 结构体的命名应该以一个大写字母开头,帮助区别结构体和普通变量。
(4) MATLAB第一次执行一个M文件时,将打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后的调用。如果函数包含了对其他M文件函数的调用,它们也将同样被编译到存储器中。普通的脚本M文件不被编译,即使它们是从函数M文件调用;每次打开脚本M 文件时,都逐行进行注释。
(5) MATLAB采用结构化的程序设计。编写一个大型的程序时,最好将它划分为一些小的模块,通常采用函数的方式,以增强程序的可读性和可测试性。
(6) MATLAB支持函数间的相互调用。M文件可以包含两个以上的函数,其中第一个函数为主函数,其他的为子函数,子函数的顺序可以任意排列。调用子函数只需要通过M函数文件的名字即可,子函数只能被本文件中的主函数和其他子函数调用。
(7) 自己编写的函数最好在编写时就添加注释,包括输入和输出参数、解释用法以及可能需要的改进等信息,以增强函数的可读性和可用性。
(8) 函数可以没有输入和输出参数,也可以具有一个或多个输入和输出参数。
(9) 函数可以按少于规定的输入和输出变量进行调用,但不能多于函数所规定的输入和输出变量数目。如果调用时输入和输出变量数目多于函数M文件中所规定的数目,则会返回一个错误信息。
(10) 函数有自己的专用工作区,它与MATLAB的工作空间是分开的。函数内变量与MATLAB工作空间唯一的联系是函数的输入和输出变量。如果函数的任意一个输入变量值发生变化,则其变化仅在函数内出现,不影响MATLAB工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消失了。因此,从一个调用到下一个调用,在函数工作空间存储信息是不可能的,然而使用全局变量就可以。
(11) 如果变量说明是全局变量,函数可以与其他函数、MATLAB工作空间和递归调用本身共享变量。为了在函数内或MATLAB工作空间中访问全局变量,在每一个所希望的工作空间,变量必须说明是全局的。但是在实际编程时应尽量避免使用全局变量,因为在函数中的全局变量,在定义该变量函数或工作空间内都可被改变,所以可能会得到与预期不同的结果,或者是毫无意义的结果。如果确实需要用全局变量,建议全局变量要长,可包含所有的大写字母,并有选择地以首次出现的 M文件的名字开头,将全局变量之间不必要的相互作用减至最小。
(12) 函数可以递归调用,也就是说,M函数文件可以调用它们本身,也可以调用脚本文件。函数每调用一次脚本文件,脚本文件就被打开和解释一次,这样对函数的执行会略有减慢。
                </div>

Matlab中写M文件及调用相关推荐

  1. matlab问题利用M文件比较两个数大小,Matlab中写M文件及调用

    1题.自然数n的阶乘 function y=lilu_fact(n) n=floor(n);%如果是小数,向下取整至整数 y=1; if n>1  %这里负数,0的阶乘都将得到1 for i=1 ...

  2. MATLAB中写TXT文件换行的实现

    使用MATLAB读写文件,程序如下 data3343_change=fopen('data3343_change.txt','w'); for i=1:40 fprintf(data3343_chan ...

  3. matlab10的阶层怎么输入,在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表...

    点击查看在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表具体信息 答:Matlab 2015R 及以后版本,都自带阶乘函数,代码为: >> facto ...

  4. 安卓从服务器中下载pdf文件 然后调用第三方软件WPS Office打开

    安卓从服务器中下载pdf文件 然后调用第三方软件WPS Office打开 前提: 高版本想使用Uri.fromFile() file://的形式 需要在onCreate 或init方法中添加下面代码. ...

  5. matlab程序改为m文件名,在MATLAB中,程序文件的扩展名为.m,所以程序文件也称为M文件...

    在MATLAB中,程序文件的扩展名为.m,所以程序文件也称为M文件 答:√ 磷酸果糖激酶-2催化6-磷酸果糖生成的产物是 答:2,6-二磷酸果糖 <人类行为的经济学分析>的作者是( ). ...

  6. matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具

    matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具 源码可见,解密P ID:22600679158222577美丽小飞侠大队

  7. 在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数

    在做研究的时候我们经常需要对模型的参数就行相应的选择,然而有没有觉得每次更改一个参数都需要运行一次仿真程序觉得很无聊呀,运行完程序还要看效果怎么样,然后再根据效果来调整参数,再次运行程序,如此反复. ...

  8. matlab中如何读写txt,Matlab中读取txt文件的几种方法

    Matlab中读取txt文件的几种方法 matlab读取文本文件的几种函数: 1.load--适合读取纯数据文本: 2.importdata--只读取数据,自动省略数据格式前后的字符,超大文件不适合: ...

  9. 将m文件通过matlab 的编译器转换为可执行文件,【转】 Matlab中提高m文件执行效率的小技巧...

    在使用数组或矩阵之前先定义维数 MATLAB中的变量在使用之前不需要明确地定义和指定维数.但当未预定义数组或矩阵的维数时,当需赋值的元素下标超出现有的维数时,MATLAB 就为该数组或矩阵扩维一次,这 ...

  10. matlab如何读取.mat文件,matlab中读取mat文件

    Matlab 训练好的 BP 神经网络如何保存和读取方法 附实例说 (明)看到论坛里很多朋友都在提问如何存储和调用已经训练好的神经网络. 本人前几天也遇到了这样的问题,...... 2. 2 HDF ...

最新文章

  1. 每秒能捕捉万亿帧的相机
  2. SQL Server里那些我们应该知道的系统存储过程
  3. python mysqldb安装_Flask干货:访问数据库——Python数据库框架MySQLPython
  4. 矩阵快速幂 学习笔记
  5. 查看oracle会话和进程_带有Oracle Digital Assistant和Fn Project的会话式UI
  6. 测试面试题集-生活物品测试:杯子、伞、钢笔、桌子
  7. 有关 strongSwan 的英文文档
  8. 软件架构设计_架构师内功心法,软件架构设计的七大原则精选案例
  9. 初识计算机编程语言教案,完整版,初识VB教学设计
  10. 修改主题源码html文件,如何修改网站模板
  11. 第四章 爬取西刺免费代理ip 并应用到scrapy
  12. Mac 下载破译版本 secureFX 和 secureCRT
  13. 思科2960交换机 - 配置命令大全
  14. 《刻意练习》读书分享
  15. 一个程序员应该怎样去学习和掌握计算机英语呢
  16. 华为服务器操作系统筹备开源社区,华为开源服务器操作系统EulerOS 开源社区年内上线...
  17. FlatBuffers vs Protocol Buffers
  18. APP稀有资源及19种无需编程的App创建工具
  19. PP实施经验分享(5)——SAP中MD04显示常用函数(读取SAP MRP运行数据)
  20. 【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场

热门文章

  1. tp5 mysql悲观锁_thinkphp悲观锁机制处理高并发
  2. 报表工具对比选型系列用例——排名及跨行组统计
  3. xtu oj 1078
  4. 大型网站SEO该怎么引爆流量_如何学网络推广
  5. 视频图像传输与显示(2)——彩色模拟电视广播制式NTSC、PAL和SECAM
  6. 关于onselect与onchange的介绍
  7. 计算机研究计划怎么写,课题研究计划书范文
  8. matlab一元方差分析方法,多元方差分析matlab程序.doc
  9. 微信开放平台认证后怎么实现扫码登录功能
  10. 数据分析:穿越致富的正确姿势