MATLAB语言基础
本套笔记于学习《MATLAB语言基础》课程所载(中国大学MOOC平台)
MATLAB语言基础
笔记内容包括常用的MATLAB图形和脚本的编写,其中若有相关错误也请各位指出。内容较多,可以根据目录跳转。本笔记最后更改时间:2023年5月8日。
第一章 MATLAB概述
一、MATLAB的发展
- 由美国Mathworks公司于1984年正式推出,随后逐次升级。目前通常每年更新两次,例如2021a,2021b。用于数值计算和图形处理的系统环境。
- MATLAB(MATrix LABoratory)(矩阵实验室)是一种以矩阵运算为基础的交互式程序语言。
- 只有一种数据类型,一种标准的输入输出语句,不需编译。
二、MATLAB的优点
除具备卓越的数值计算能力外,还提供专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能。每个变量代表一个矩阵;每个元素都看作复数;所有运算都对矩阵和复数有效;指令表达式与数学、工程中常用的形式非常相似
- 友好的工作平台和编辑环境:许多工具采用图形用户界面,包括MATLAB桌面和一些窗口,例如命令窗口、编辑器和调试器等;程序不必经过编译就可以直接运行,能及时报告出现的错误并分析错误的原因。
- 简单易用的程序语言:MATLAB是一种高级的矩阵/阵列语言。语法特征更符合科技人员对数学表达式的书写格式,非常适合非计算机专业的人员使用。
- 强大的数学计算和数据处理能力:包含600多种数学运算函数,可以方便地实现用户所需的各种计算功能。例如矩阵、特征向量、傅里叶变换、线性方程求解、微分方程求解、复数、三角函数、多维数组运算等。矩阵的行数、列数无需事先定义。
- 强大而简易的绘图功能:能根据输入数据自动确定坐标绘图;能规定多种坐标系;能绘制三维坐标中的曲线和曲面;可设置不同的颜色、线型和视角等。
- 功能丰富,可扩展性强:有丰富的内部函数和工具箱。工具箱包括信号处理、图像处理、控制系统、神经元网络、小波分析、金融等,几乎涉及各个方面。
三、MATLAB的工作环境
- 命令窗(Command Window)
是对MATLAB进行操作的主要载体。默认情况下,启动MATLAB时就打开命令窗。MATLAB的所有函数和命令都可以在命令窗执行。
程序的运行结果(除图形外)都显示在命令窗。 - 图形窗(Figure Window)
显示图形的窗口。执行绘图命令后自动弹出。 - 文本编辑窗(File Editor)
编写和修改文件程序的窗口。
四、帮助系统
命令窗口的帮助系统。
- help:查找所有命令或函数的使用方法。
help+函数名
- lookfor:在不知道某命令或函数的确切名称时查找其功能。
lookfor+关键字
第二章 矩阵及其运算
第一节 MATLAB变量
-
MATLAB的特殊常量
特殊常量是一些预先定义好的数值变量含义 符号 圆周率π pi 虚数单位 i或j 无穷大∞ inf 非数 NaN 默认结果存储变量(临时变量) ans -
变量的命名规则
所有的变量都表示一个矩阵或一个向量
(1)变量名由大、小写的英文字母、数字和下划线等组成,但首位必须是英文字母(此处与其他语言如C语言有些区别,C语言的变量首字母可以是下划线_和字母,而MATLAB则只能是字母);
(2)变量名区分大小写;
(3)变量名不能是MATLAB的命令、函数、M文件名,以免引起逻辑运行错误;
(4)变量名的长度不能过长。 -
变量的定义与赋值
变量不需要先定义后使用,MATLAB会自动根据实际赋值的类型对变量类型进行定义
(1)赋值语句的一般形式:
变量 = 数/字符/表达式
a=1
x='s'
y=(1+2+3)/5*4
注意:单引号必须在英文状态下输入;数值变量的类型自动定义为双精度变量。
- 变量的显示
(1)显示格式:MATLAB中的数据存储和计算都是以双精度进行,但可以用format命令改变数据的显示格式。
(2)变量的显示命令:直接在命令行输入变量名再回车即可。用disp函数可以紧凑型格式显示结果而不输出变量名。
例:
A = magic(3)
disp('这是一个3行3列的魔方矩阵')
disp(A)
- 变量的存取
可以通过多种方式实现一个或多个变量的选择性存取
(1)命令:
save实现从内存到硬盘的存储;
load实现从硬盘到内存的载入。
①格式1:
load 文件名 变量名
save 文件名 变量名
②格式2:
S = load('文件名','格式','变量名')
S = save('文件名','格式','变量名')
③快捷方式:利用工作空间窗口
- 变量的清除
clear命令可以删除一个、多个或所有变量。
- 格式:
clear 变量名
clear 变量1 变量2 ···
clear all
注意: clear是从内存中删除变量,delete是从硬盘上删除数据文件
- 变量的检查
检查工作空间中的变量及其阶数
① who:显示前面用过的变量
② whos:显示前面用过的变量及其详细特征
注意:MATLAB中所有的命令和函数都用小写字母表示。
第二节 一维数组的创建与元素提取
- 一维数组(向量)的创建
(1)直接输入法
从键盘直接键入元素;
- 列与列之间的数据用逗号或空格分隔;
- 行与行之间的数据用分号分隔。
a=[1;2;3] %生成列向量
b=[1,2,3] %生成行向量
c=[1 2 3] %生成行向量
说明:
- 行中写多条语句时,逗号和分号可以作为语句间的分隔符。
- 用分号,则命令窗不显示运行结果。
(2)冒号生成法
用于产生递增或递减的等差数列
格式:初值:[步长]:终值
说明:当步长缺省时,默认值为1。
示例:
a=1:2:6
b=1:6
(3)定数线性采样法
用于产生起止于两点之间的n个数据点。
格式:x=linspace(a,b,[n])
说明:当n缺省时,默认值为100
示例:
b=linspace(1,6,6) % 等同于b=1:6
(4)拼接法
- 利用已有的一维数组创建新的一维数组。
- 将两个行向量或列向量拼接为一个行向量或列向量,也可以利用冒号抽取其中的部分数据生成新的一维数组。
①行向量拼接:用方括号和逗号
示例:a3=[a1,a2]
②列向量拼接:用方括号和分号
示例:b3=[b1;b2]
③向量的抽取:用冒号
示例:a4=a3(1:2:end) % 抽取a3中奇数位置的数组成新的数组
实例演示
创建两个不同的一维行向量和列向量,并利用这两个向量拼接成一个新的行向量和列向量,然后再由新向量中的奇数位置元素组成新的向量。
x1= 1:3
x2= linspace(5,20,4)
x= [x1,x2]
y1=[1:3]'
y2= linspace(5,20,4)'
y= [y1;y2]
x3= x(1:2:end)
y3= y(1:2:end)
- 一维数组中元素的提取
利用圆括号和索引号。
例:
A=[1 2 3 4 5]
a3=A(3)
%提取出数组A中第三个数记为a3
第三节 二维数组的创建与元素提取
- 二维数组(矩阵)的创建
(1)直接输入法
规则:
①矩阵元素必须在方括号内;
②同行元素之间用空格或逗号隔开;
③行与行之间用分号或回车符隔开;
④元素可以是数值、变量、表达式或函数;
⑤矩阵的维数不必预先定义。
示例:
a1=[1 2 3;4 5 6;7 8 9]
a2=[1,2,3;4,5,6;7,8,9]
a3=[1 2 3;
4 5 6;
7 8 9]
(2)利用MATLAB中的特殊矩阵函数构建新矩阵
含义 | 函数 |
---|---|
全1矩阵 | ones() |
全0矩阵 | zeros() |
(0,1)区间均匀分布的随机矩阵 | rand() |
单位矩阵 | eye() |
均值为0、方差为1的标准正态随机分布矩阵 | randn() |
- 二维数组中元素的提取
(1)元素的提取
利用圆括号、逗号和行、列索引号。
例:
A=[1 2 3;4 5 6;7 8 9]
A(i,j) 提取第i行,第j列的元素
(2)一维数组和和子矩阵的获得
利用冒号和表达式获得
A(:,j) % 提取第j列的所有元素
A(i,:) % 提取第i行的所有元素
A(:,k:k+m) % 提取第k~k+m列的所有元素
A(i:i+m,:) % 提取第i~i+m行的所有元素
A(i:i+m,k:k+m) % 提取第i~i+m行、k~k+m列的所有元素
实例演示
a=[1,2,3;4,5,6;7,8,9]
% 输入:
a1=a(:,2)
a2=a(2,:)
a3=a(:,1:2)
a4=a(1:2,:)
a5=a(1:2,1:2)
% 输出:
a1=[2;5;8]
a2=[4,5,6]
a3=[1,2;4,5;7,8]
a4=[1,2,3;4,5,6]
第四节 字符数组和空数组
- 字符数组
主要用于可视化编程,例如界面设计和图形绘制。
(1)字符变量的创建
把待建字符放在单引号中。
注意:单引号必须放在英文状态下输入。
A = 'I am a Chinese!'
(2)字符数组的拼接
利用方括号和逗号进行两个及以上字符数组的直接拼接。
str1='Welcome to '
str2='Being'
str=[str1,str2]
(3)字符数组的显示
使用disp()
例:disp('HelloWorld')
- 空数组
- 是为操作和表述需要专门设计的一种数组。用方括号“[]”表示;
- 不要与全零数组混淆;
- 唯一能正确判断一个数组是否为“空”的指令是
isempty()
。
第五节 矩阵的算术运算
- 矩阵的基本算数运算
加、减、乘、除(左除,右除)、乘方
(1)矩阵的加、减运算
运算符:A±B
注意:
- 要求相加减的矩阵阶数相同。
- 检查矩阵阶数的语句:
[n,m]=size(A)
l=length(A)
(2)矩阵的乘法运算
运算符:A*B
%要求A的列数与B的行数(内阶数)相等
(3)矩阵的除法运算
左除:A\B
右除:B/A
注意:左除时要求两矩阵的行数必须相等,右除时要求两矩阵的列数必须相等。
(4)矩阵的乘方运算
运算符:矩阵^幂次
- 实例演示
A=[1,2;3,4]
B=[1,1;2,2]
Y1=A+B
Y2=A-B
Y3=A*B
Y4=A\B
Y5=B/A
Y6=A^2
- 矩阵的点(元素群)运算
矩阵中对应位置元素进行相关运算。要求参加运算的矩阵必须是同阶的(行列数相等)
运算符:在矩阵的基本运算符前加点“.”
①点乘:.*
②点除:.\ ./
③点乘方:.^
第六节 矩阵的关系运算和逻辑运算
- 矩阵的关系运算
- 关系运算符:
符号 | 含义 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
== | 等于 |
~= | 不等于 |
- 运算结果:真(1),假(0)
- 运算法则:
(1)标量比较:直接比较数的大小。
(2)矩阵比较:对应位置元素按照标量运算关系进行比较,最终结果为一个由0和1组成的、与原矩阵同阶数的矩阵。
注:相同阶数的矩阵才能进行比较
- 矩阵的逻辑运算
-
逻辑运算符:与(&),或(|),非(~)
针对二进制数(0,1)的逻辑运算 -
运算法则
(1)“与”运算:两者均为1,则结果为1;否则为0。
(2)“或”运算:两者只要有一个为1,则结果就为1;否则为0。
(3)“非”运算:取反。如果原来为1,则进行“非”运算后为0;反之亦然。 -
实例演示:
U=P|~P
all(P)
all(U)
any(P)
% all:全为真(按列计算)
% any:不全为假(按列计算)
第七节 矩阵元素的处理
- 矩阵元素的取整
①向下取整:floor()
②向上取整:ceil()
③四舍五入取整:round()
④截尾取整:fix()
例:
A=[2.3,2.7;-2.3,-2.7]
A_f=floor(A)
A_c=ceil(A)
A_r=round(A)
A_x=fix(A)
- 矩阵元素的取模和取余
①mod(x,y)
取模
②rem(x,y)
取余
均为取余函数,区别在于:当x和y的正负号相同时,两个函数的结果相同,均为x除以y的余数;当x和y的正负号不同时,rem函数结果的符号与x相同,而mod函数结果的符号与y相同。
第八节 矩阵的行列式、秩与迹及特征值分析
- 矩阵的行列式
运算符:det()
注意:用于求方阵的行列式值 - 矩阵的秩与迹
(1)矩阵的秩
- 矩阵的秩是矩阵的列向量组(或行向量组)的任一极大线性无关组所含向量的个数
运算符:rank()
(2)矩阵的迹
- 矩阵的迹等于矩阵主对角线元素的总和。也等于矩阵特征值的总和。
运算符:trace()
注:要求矩阵是方阵
- 矩阵的特征值分析
(1)E=eig(A)
求矩阵A的全部特征值,并构成向量E
(2)[V,D]=eig(A)
求矩阵A的全部特征值,构成对角矩阵D;求A的特征向量构成列向量V
第九节 矩阵的逆与线性方程组求解
- 矩阵的逆
(1)inv()
用于求满秩方阵的逆。
(2)pinv()
用于求不是方阵或非满秩方阵的逆——伪逆。
如果ABA=A,BAB=B,则称B为A的伪逆,或广义逆矩阵。 - 线性方程组求解
| x1-2x2+3x3=1
| 2x1+3x2+x3=2
| 3x1-x2-x3=4
AX=B X=A^-1*B
X = inv(A)*B
X = inv(A)*B = A\B (矩阵左除)
A=[1,-2,3;2,3,1;3,-1,-1];
B=[1;2;4];
X = inv(A)*B
X1 = A\B
% 左除比inv更精确
第十节 矩阵的分解与变换
- 矩阵的分解
(1)三角分解(方阵):[l,u]=lu(a)
(2)正交分解:[q,r]=qr(a)
其中:
- a(n,m)
- q:n阶正交方阵
- r:与a同阶的上三角矩阵
(3)奇异值分解:[u,s,v]=svd(a)
其中:
- u:n阶正交方阵
- s:n×m阶的对角阵,对角线元素为a的奇异值,长度为n、m的较小者
- v:m阶正交方阵
- 矩阵的变换
(1)矩阵的共轭转置:'
(2)矩阵的共轭:conj
(3)矩阵的转置:conj'
- 复数矩阵的赋值
①对元素逐个复制:
z=[1+2i,3+4i;5+6i,7+8i]
②对实部和虚部矩阵分别赋值:
z=[1,3;5,7]+[2,4;6,8]*i
注:只有数字和i的乘积可省略乘号
(4)矩阵的行、列扩展
a=[1,2,3;4,5,6;7,8,9]
- 行扩展:
a(4,3)=6.5
a(5,:)=[5,4,3]
列扩展:
a(:,4)=[5;4;3;2;1]
a(:,4)=[5;4;3;2;1]
第三章 数据可视化
第一节 基本二维曲线绘制
plot(y)
y可以是向量、实数矩阵或复数向量。
(1)y是向量:绘制以向量索引为横坐标、以向量元素值为纵坐标的图形。
(2)y是实数矩阵:绘制y的列向量对其坐标索引的图形。
(3)y是复数向量:plot(y)相当于plot(real(y), imag(y))
例1:
y=5*(rand(1,10)-.5)
plot(y)
例2
y=[0 1 2;2 3 4;5 6 7]
plot(y)
-
plot(x,y)
x,y均可以是向量和矩阵。
(1)x,y均是n维向量:
绘制向量y对向量x的图形,x为横坐标,y为纵坐标。
(2)x是n维向量,y是m×n或n×m阶矩阵:
在同一图内绘制m条不同颜色的曲线,x为横坐标、纵坐标为y矩阵的m个n维分量。在同一图内绘制多条自变量相同的不同的曲线。
(3)x,y均是m×n阶矩阵:
在同一图内绘制n条不同颜色的曲线,以x对应列分量为横坐标、y对应列分量为纵坐标。 -
plot(t,[y1;y2;…])
注:y1,y2,…均以t为自变量,在同一坐标系中画出多幅图 -
接续
plot(t,y1)
hold on
plot(t,y2,'r')
注:画完y1,接在后面画y2
plot(x1,y1,x2,y2,……xn,yn)
用于在同一图内绘制横坐标
例1:
x=0:0.1:10
y=sin(2*x)
plot(x,y)
例2:
x=0:0.1:10
y=[sin(x)+2;cos(x)+1]
plot(x,y)
例3:
x=0:0.1:10;
y1=sin(x)+2;
y2=cos(x)+1;
plot(x,[y1;y2])
例4:
x=0:0.1:10;
y1=sin(x)+2;
y2=cos(x)+1;
plot(x,y1)
hold on
plot(x,y2,'r')
例5:
t1=0:0.2:4*pi;
y1=exp(-0.1*t1).*sin(t1);
t2=0:0.2:2*pi;
y2=exp(-0.5*t2).*sin(5*t2+1);
plot(t1,y1,'+k',t2,y2,':r')
例1图:
例234图:
例5图:
第二节 绘图辅助操作
- 颜色、标记和线型
(1)颜色:用不同的英文字母表示不同的颜色,多数与英文单词对应。
颜色名称 | 颜色符号 |
---|---|
蓝色 | b |
绿色 | g |
红色 | r |
青色 | c |
洋红 | m |
黄色 | y |
黑色 | k |
白色 | w |
(2)标记和线型
标记 | 线型 |
---|---|
. | -(实线) |
O | :(点线) |
× | -.(点划线) |
+ | –(虚线 |
* |
标记名称 | 标记符号 |
---|---|
方形 | S |
菱形 | D |
向下三角形 | V |
向上三角形 | ^ |
向左三角形 | < |
向右三角形 | > |
五角星 | P |
六角形 | h |
(3)plot命令可设定的属性
- 坐标轴标注和范围设置
坐标轴的标注、范围、刻度以及宽高比
(1)坐标轴标注函数:xlabel、ylabel、zlabel
格式:xlabel('string')
string:标注所用的说明字符串
默认:xlabel(‘x’)
(2)坐标范围标注函数:axis
格式:axis([横轴范围 纵轴范围])
%例:
t=0:0.02:2*pi;
x=4*sin(t);
y=5*cos(t);
plot(x,y)
xlabel('指定范围')
axis([-4 4 -5 5])
- 标题和图例标注
(1)标题是对所绘图形的说明。
格式:title('string')
string:标注所用的说明字符串
(2)图例标注是为图形中的所有曲线进行标注。
格式:legend('string1','string2',…)
legend('location','location',…)
- stringi:标注按绘制的先后顺序生成的曲线
- legend:定义标注放置的位置
第三节 双纵坐标、多子图绘制
- 双纵坐标绘图
(1)plotyy(x1,y1,x2,y2)
两条曲线x1-y1、x2-y2分别以左右纵轴为纵坐标。
% 例:
x1=0:0.1:5;
y1=exp(-x1/3);
x2=0:0.1:5;
y2=sin(2*x2);
plotyy(x1,y1,x2,y2)
title('plotyy exam')
- 多子图绘制
在一个图形窗绘制多条不同的曲线。
subplot(m,n,p)
将图形窗分为m×n个子窗口,在第p个子窗口中绘制图形。子图的编号顺序为从左到右,从上到下。p为子图编号。
% 示例
t=0:0.5:4*pi;
y=exp(-0.1*t).*sin(t);
subplot(2,2,1),stem(t,y)
title('stem(t,y)')
subplot(2,2,2),stairs(t,y)
title('stairs(t,y)')
subplot(2,2,3),bar(t,y)
title('bar(t,y)'),pause(1)
subplot(2,2,4),fill(t,y,'r')
title("fill(t,y,'r')")
- 多图绘制
生成多个图形窗口
figure()
% 示例
t1=0:0.2:4*pi;
y1=exp(-0.1*t1).*sin(t1);
t2=0:0.1:2*pi;
y2=exp(-0.5*t2).*sin(5*t2+1);
figure(1)
plot(t1,y1,'*c')
figure(2)
plot(t2,y2,':r')
第四节 图形的直接编辑
-
主要内容
(1)颜色。标记和线型
(2)坐标轴标注和范围设置
(3)标题和图例标注
(4)保存 -
操作
右键图形,弹出属性修改界面, 在内改变线型、线宽、字体等属性。
第五节 三维数据可视化
- 三维曲线绘制
plot3(x,y,z)
% 示例
z=0:0.1:4*pi
x=cos(z)
y=sin(z)
plot3(x,y,z)
grid
% grid:图上加坐标网格
- 三维曲面绘制
mesh()
网格状曲面
surf()
给网格填充颜色的曲面
% 特殊图形的绘制
axis equal;
M=moviein(16);
for j=1:16
plot(fft(eye(j+16)));
M(:,j)=getframe;
end
movie(M,30)
第四章 程序设计
第一节 M文件
- M文件的创建、保存、打开和运行
(1)M文件的创建
在文本编辑窗“editor”
①菜单方式:File→New→Script
②快捷键方式:单击快捷工具栏上的对应图标。
③命令方式:在命令窗口键入“edit文件名”
(2)M文件的保存
①菜单方式:File→Save
②快捷键
③运行+保存:运行前若文件没有保存,系统会提示保存后再运行
④另存为:File→Save As
说明:M文件的后缀是.m
(3)M文件的打开
①菜单方式:File→Open
②快捷键方式
③命令方式:命令窗键入“edit XX”
(4)M文件的运行
①在editor环境下:单击“run”
②快捷键:F5
- 主程序文件和函数文件
(1)主程序文件:用户编制的程序
- 主程序的特点
①用clear,clear all, close all开头
②注释行:以%开头
③程序主体,定义全局变量(global 变量名1……)
(2)函数文件:子程序文件。必须以函数定义为第一行内容。
函数文件必须以function开始,且必须有函数名;可以有输入、输出变量;除用global说明外,否则变量均为局部变量。
函数文件可以是MATLAB本身提供的,也可以是用户编制的程序。
第二节 条件控制结构
- if条件控制结构
(1)单分支结构
if 表达式
语句组 A
end
(2)双分支结构
if 表达式
语句组 A
else
语句组 B
end
(3)多分支结构
if 表达式
语句组 A
elseif 表达式1
语句组 B
elseif 表达式2
语句组 C
……
else
语句组n
end
- switch-case条件控制结构
可使程序在不同的情况下进行相应的操作
switch 表达式(标量或字符串)
case 值1
语句组 A
case 值2
语句组 B
……
otherwise
语句组 N
end
3*. 示例演示:判断数的奇偶性
(1)if-else语句
n=input('n=')
if rem(n,2)==0
A='even'
else
A='odd'
end
(2)switch-case语句
clear all
n=input('n=')
switch rem(n,2)
case 1
A='odd'
case 0
A='even'
otherwise
A='empty'
end
第三节 循环控制结构
- for循环结构
主要用于以固定取值或循环次数的重复执行过程。
for 循环变量=表达式
语句组
end
例:
for k=初值:增量:终值
语句组
end
- while循环结构
主要在不能或不易确定循环次数的情况下使用
while 表达式
语句组
end
- 实例演示
(1)计算1到999之间的所有偶数和
- for循环
s1=0
for m=2:2:999
s1=s1+m
end
s1
s2=sum(2:2:999)
(2)求MATLAB中的最大实数。
x=1
while x~=inf
x1=x
x=2*x
end
x1
第四节 其它常用语句
- pause语句
实现暂停功能
pause
暂停至单击鼠标左键或按键盘的任意键后,继续执行后面的语句。pause(时间)
暂停到设定时间(秒)后,继续执行后面的语句。
- input语句
是一种人机交互命令
input('提示文字')
程序执行到此时暂停,在命令窗显示引号中的字符串,要求用户通过键盘键入数据。
第五节 M文件的注释和程序调试
-
M文件的注释
(1)注释语句以百分号“%”开头,语句体颜色自动变为绿色。注释语句不是运行语句。
(2)程序中如果有不想让其运行的语句,则在其前面加“%”,这样可以让程序执行到此跳过该语句继续执行后面的语句。 -
程序的调试
MATLAB自动检查和显示程序错误的能力很强,易于调试。
如果程序有错误,则程序停止运行,并将错误显示在命令窗口,而且提示错误所在的位置以及错误原因。
第五章 数值计算
第一节 数据分析函数库
- 基本的数据分析
基本的数据处理分析功能按列进行。
函数 | 功能 |
---|---|
max() | 求各列最大值 |
min() | 求各列最小值 |
mean() | 求各列平均值 |
sum() | 求各列元素和 |
std() | 求各列标准差 |
-
用于随机数据分析的函数
(1)rand(m,n)
产生在0~1之间均匀分布的m行、n列随机数矩阵。
(2)randn(m,n)
产生正态分布的m行、n列随机数矩阵,均值为0,标准差为1。 -
用于相关分析的函数
(1)corrcoef(x,y)
计算两个向量x,y的相关系数
(2)cov(x,y)
计算x,y的协方差矩阵
第二节 多项式函数库
- 多项式的四则运算
(1)多项式的表示
用各幂次前的系数向量表示,从高到低。
a=[a(1),a(2),…,a(n),a(n+1)]
注意:零系数不能省去。
(2)多项式的四则运算
①多项式相加:a+b
注意:长度必须相同,短的在前面以"0"补齐
②多项式相乘:conv(a,b)
③多项式相除:[q,r]=deconv(a,b)
q:商式
r:余子式
注意:a是分子,b是分母,分母系数向量的第一位不能为零。
-
多项式求导、求根和求值
(1)多项式求导:ployder(a)
(2)多项式求根:roots(a)
(3)由根求多项式系数:ploy(a)
(4)多项式求值:ployval(a,xv)
给多项式a中的自变量x赋予值xv -
多项式拟合
- 拟合:根据一组已知的数据找到其数学表达式
- 拟合方法:使方差最小,应用最小二乘法。
p=polyfit(x,y,n)
x,y是已知的N个数据点坐标向量,n是拟合的多项式次数,p是求出的多项式系数向量
第三节 非线性函数分析及函数的数值积分
-
非线性函数分析
(1)绘制函数曲线
fplot('函数名',[初值,终值])
(2)求函数极值
fmin('函数名',初值,终值)
(3)求函数零点
fzero('函数点',初猜值)
-
函数的数值积分
(1)定积分子程序
quad('函数名',初值,终值)
第四节 线性微分方程的解
- 线性微分方程的解——拉普拉斯变换法
首先利用拉普拉斯变换将线性常微分方程变换为代数方程,响应的表达式为s的有理分式。
即:Y(s)=B(s)/A(s)
(1)部分分式展开(假设分母比分子阶数高)
[r,p,k]=residue(b,a)
(2)求反变换
y(t)=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+……
—
——
————
————————
理想是指路明灯
学至此,也颇有收获