MATLAB.m文件(2019.10.20)

一、函数M文件

MATLAB有内装函数,如三角函数、幂函数、指数函数等,这些函数都用后缀为M的函数文件编写,故又称函数M文件。当调用MATLAB函数时,在命令窗口输入函数名,则该函数的程序即被调用并执行。

例3-1

求解下列3次代数方程式的根
Alt

>> syms x
>> y=x^3+6*x^2+11*x+6;
>> y1=sym2poly(y)  %提取3次代数方程的系数向量y1
%sym2poly为多项式转换成系数向量的转换系数
y1 =

     1     6    11     6

>> roots(y1)  %求解方程的根(y=0)

ans =

   -3.0000
   -2.0000
   -1.0000

二、 函数M文件的构成

M文件的编写在M文件编辑器中进行。
函数M文件由下列5部分组成:

  1. 函数定义行:它必须由关键字function开头,紧跟着是函数的输出变量,如果有多个输出变量则用方括号括起来,各输出变量用逗号隔开。在等式右边则为函数名,后面紧接着是输入变量,用圆括号括起来,多个用逗号分隔。
  2. 帮助文档的标题行(简称H1行):这一行简明扼要的说明函数的功能。
  3. 帮助文本的内容:详细说明变量的类型,使用时的语法规则,使用举例和相关的函数名作为查找时的参考。
  4. 函数体:即由输入变量计算输出变量的程序体,还包括程序运行时的出错处理。
  5. 附注:说明函数的编者、版权和日期。

例3-2

编制一个程序,计算三角形的面积A,已知三角形的3条边为a、b、c,面积计算公式为
在这里插入图片描述其中s=(a+b+c)/2

function A=triarea(a,b,c)
if a<0||b<0||c<0

    disp('The a,b,c must be positive number.')
end
if a+b<c||a+c<b||b+c<a
    
    disp('This is impossible.')
end
    s=(a+b+c)/2;
    A=(s*(s-a)*(s-b)*(s-c))^(1/2);
%TRIAREA(a,b,c)is calculate the area of triangle.
%The a,b,c must be a scale and nonnegtive.
%and any two sides of triangle must be greater than the third.
%For example triarea(3,4,5)
%    ans=
%          6
%    triarea(3,0,8)
%    ans=
%          0
%    triarea(11,18,6)
%    This is impossible.
%    triarea(-5,6,7)
%    The a,b,c must be positive number.
%See also POLYAREA

  1. 原书存在错误,break语句只能用于for语句中
  2. A的公式应为A=(s*(s-a)(s-b)(s-c))^(1/2);

(1)已知a=4,b=8,c=√80,求三角形面积。

>> triarea(4,8,80^(1/2))

ans =

    16

(2)已知a=4,b=8,c=14,求三角形面积。

>> triarea(4,8,14)
This is impossible.

三、内联函数

对于一次性使用的函数,可以用内联函数inline来实现。内联函数的编制比较宽松,但它不进行函数存储,它的书写格式为

F=inline(expr,'x1','x2',…,'xn')

例3-3

用内联函数表示 y = sin x+ sin2x,并求 x=π/4时的函数值。

在命令窗口键入如下程序:

>> y=inline('sin(x)+sin(x)^2','x')

y =

     内联函数:
     y(x) = sin(x)+sin(x)^2

>> y(pi/4)

ans =

    1.2071

例3-4

用内联函数来表示 y = sinx1cosx1 +sinx2cosx2 -sinx1cosx2,并求 x1 =π/8, x2=3π/8时的函数值。

在命令窗口键入如下程序:

>> y=inline('sin(x1)*cos(x1)+sin(x2)*cos(x2)-sin(x1)*cos(x2)','x1','x2')

y =

     内联函数:
     y(x1,x2) = sin(x1)*cos(x1)+sin(x2)*cos(x2)-sin(x1)*cos(x2)

>> y(pi/8,3*pi/8)

ans =

    0.5607

四、文本M文件

一次要执行大量的 MATLAB 命令和语句,且经常重复使用的程序,则可将这些语句的集合,存放在扩展名为 M 的文件中。它的输出数据亦保存在工作空间中,便于下次计算时调用。为了和函数文件的区别,故称为文本文件。

例3-5

在单位圆内,分别绘制 10 花瓣、20 花瓣、2花瓣和不对称花瓣图。通过Enter键来切换图形。

在 M 文件编辑器输入以下程序:

%flower petal plots  %程序标题,花瓣图
theta= - pi:pi/300:pi; %设置角度分量,分度为pi/300
rho(1,:)=2*sin(5*theta).^2; %计算频率为5的正弦函数平方
rho(2,:)=cos(10*theta).^3; %计算频率为10的余弦函数立方
rho(3,:)=sin(theta).^2; 
rho(4,:)=5*cos(3.5*theta).^3; %计算频率为3.5的余弦函数立方
for i=1:4
    polar (theta, rho(i,:))
    switch i
        case 1
            title 10-petal
        case 2
            title 20-petal
        case 3
            title two-petal
        case 4
            title 2-3-2unsymmetrical-petal
    end
    pause
end

在 MATLAB 命令窗口输入

>> flower

:原书存在一处错误,应该在命令窗口直接输入flower。

五、M文件的编辑和存储

MATLAB 的流程控制有:
循环控制语句 for/end、while/end;
条件控制语句 if/else/end;
分支条件语句 if/else if/elseif/…else/end;
开关控制语句 switch/case 1,case 2…otherwise/end;
试验和捕捉语句 try/catch/end ;
返回语句 return;
中断语句 break 等。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值