当前位置:首页 > 西工大matlab知识点整理(详细版本)
33.函数文件 (1)函数文件的基本结构
函数文件由function语句引导,其基本结构为: function 输出形参表= 函数名(输入形参表) 注释说明部分 函数体语句
其中,以function开头的一行为引导行,表示该M文件是一个函数文件。当输出形参多于一个时,应该用方括号括起来。 说明: 关于函数文件名 函数文件名通常由函数名再加上扩展名.m组成。 当函数文件名与函数名不同时,Matlab将忽略函数名而确 认文件名因此调用时使用函数文件名。 关于注释说明部分 注释说明包括3部分:
紧随引导行之后以%开头的第一注释行。
这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助时使用。
第一注释行及之后连续的注释行。
通常包括函数输入/输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。
与在线帮助文本相隔一空行的注释行。 包括函数文件编写和修改的信息,如作者和版本等。 (如果在函数文件中插入了return语句,则执行到该语句就结束函数 的执行,流程转至调用该函数的位置。通常也不使用return语句。)
例如:
function [s,p] = fcircle(r)
% FCIRCLE calculate the area and perimeter of a circle of radii r % r 圆半径 % s 圆面积 % p 圆周长
06年2月30日编 s = pi*r*r; p = 2*pi*r;
将以上函数文件以文件名fcircle.m保存,然后在命令窗口调用。 [s,p] = fcircle(10) 输出结果是: s =
314.1593 p =
62.8319
(2)函数调用
函数调用的一般格式是:
[输出实参表] = 函数名(输入实参表)
注意:函数调用时,各实参出现的顺序、个数,应与函数定义时相同。
(3)函数参数的可调性 Matlab在函数调用上有一个与一般高级语言不同之处:
函数所传递参数数目的可调性,即参数的数量可以改变。
在调用函数时,Matlab用两个预定义变量nargin和nargout分别记 录调用该函数时的输入实参和输出实参的个数。
(4)全局变量与局部变量 函数文件中的变量是局部变量。 全局变量的作用域是整个Matlab的工作空间,所有函数都可以对它
进行存取和修改。
全局变量用global命令定义,格式为: global 变量名
34.程序调试 一般说来,应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。
(1)Matlab调试菜单
控制单步运行 step:单步运行,不进入函数; step in: 单步运行,进入函数; step out:停止单步运行; save and run:存储文件并开始运行。 断点操作
stop if error/warnings: 在程序执行出现错误或警告时,停止程序运行,进入调试状态。
35.Matlab矩阵分析与处理
(1)通用的特殊矩阵
常用的产生通用特殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones:产生全1矩阵(幺矩阵)。 eye:产生单位矩阵。
rand:产生0~1间均匀分布的随机矩阵。
randn:产生均值为0,方差为1的标准正态分布随机矩阵。 (2)对角阵与三角阵
提取矩阵的对角线元素函数:diag A = [1,2,3;4,5,6];
D = diag(A) D = 1 5
diag函数还有一种形式:diag(A,k)提取第k条对角线的元素。 D1 = diag(A,1) D =
2
6
构造对角矩阵
如果V是一个m个元素的向量,diag(V)将产生一个m×m对角矩阵, 其主对角线元素即向量V为的元素。
(2)矩阵求逆与线性方程组求解
矩阵的逆:求方阵A的逆矩阵可调用函数inv(A)。
求解方程组:x = inv(A)*b %x = A\\b,也可以运用左除运算符求解。 (3)矩阵行列式值
把一个方程看做一个行列式,并按行列式的规则求值,称 为行列式的值。在Matlab中,使用函数det(A)得到。
36.多项式(polynomial)
(1)多项式的MATLAB表达:
多项式x4-12x3+25x+116由行向量: p=[1 -12 0 25 116]表示。 (2)求解多项式的根:roots指令
求解多项式x4-12x3+25x+116的根 >>p=[1 -12 0 25 116] p =
1 -12 0 25 116 >>r=roots(p)
(3)已知多项式的根,求解多项式
>> pp=poly(r) pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
即:x4-12x3+25x+116 (4)多项式的乘法(conv指令)
多项式a(x)=x3+2x2+3x+4
和b(x)= x3+4x2+9x+16的乘积。
>> a=[1 2 3 4] ; b=[1 4 9 16]; >> c=conv(a, b) c =
1 6 20 50 75 84 64 两个以上的多项式的乘法需要重复使用conv.
(5)多项式加法: MATLAB没有提供进行加法运算的函数。
如果两个多项式向量大小相同,标准的数组加法有效。把多项式a(x)与上面给出的b(x)相加。 >> d=a+b
当两个多项式阶次不同,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次。
(6)多项式的除法(deconv)
c(x)=x6+6x5+20x4+50x3+75x2+84x+64 除以b(x)= x3+4x2+9x+16
>> c=[1 6 20 50 75 84 64];
>> b=[1 4 9 16]; >> [q , r]=deconv(c , b) q =
1 2 3 4 r =
0 0 0 0 0 0 0 (7)多项式的导数(polyder)
求b(x)= x3+4x2+9x+16的导数。 >> b=[1 4 9 16]; >> d=polyder(b) d =
3 8 9
结果为:3x2+8x+9 另外两种形式为:
p = polyder(P,Q):求P*Q的导函数
[p,q] = polyder(P,Q):求P/Q的导函数,导数分子存入p,分母存入q
(8)多项式的估值(polyval)
绘制p(x) = x3+4x2-7x-10在[-1, 3]段上的曲线。
x=linspace(-1, 3); % choose 100 data points between -1and 3. p=[1 4 -7 -10]; v=polyval(p, x);
plot(x, v);
title('x^{3}+4x^{2}-7x-10'); xlabel('x') (9)MATLAB中没有直接提供数值导数的函数,只有计算向前差分的函数diff,其调用格式为:
DX = diff(X) 计算向量X的向前差分
DX = diff(X,n) 计算向量X的n阶向前差分
例如:
f = inline(‘sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2’); %内联函数 x = -3:0.01:3; dx = diff(f([x,3.01]))/0.01; %根据定义式求导数 plot(x,dx)
(10)数值积分
常用积分指令:quad和quadl。 一般说来,quadl比quad更有效。 具体调用格式如下: q = quadl(fun,a,b) q = quadl(fun,a,b,tol)
q = quadl(fun,a,b,tol,trace) [q,fcnt] = quadl(fun,a,b,...)
输入量fun为被积函数的句柄。
输入量a, b分别是积分的下限、和上限,都必须是确定的数值;
共分享92篇相关文档