2010MATLAB及控制系统仿真_2_matlab_2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章 仿真软件 —MATLAB基础与应用
主讲教师:姜萍
1.2.2 MATLAB基本设计
1、变量
变量在使用前不需定义维数和大小。
命名规则:以字母打头、不含标点符号、最多不超过 19个字符,区分字母的大小写,如X1、 x1、 a、 A 等。另外要避免使用特殊变量。 变量可按需要定义成全局变量和局部变量:
function g=myguass(a)
%The Solution of Linear Systems AX=B by Guassian Elimination %input a=[A|B] is augmented matrix %output g=x is the result %It was edited in Mar 20,2002 and modified in May 3,2003 by JP
五.数据的输入输出
1、数据不多时,可由FileSave Workspace As保存 工作空间当前所有变量(保存为***.mat)。类似地, 由File Import Data 可装载数据。 2、save、load命令:以二进制格式保存和读入 save 将工作空间所有变量以二进制格式存入matlab.mat save filename 将所有变量以二进制格式存入filename.mat save filename x y z 将变量x y z以二进制格式存入
四. 字符运算
可定义一串文字并进行字符串的处理与运算。字符 串是ASCII码的数值数组,每个字符占用2个字节存储。 定义格式:用单引号括起来‘ ’ x=‘Matlab is a software’ 字符串的转换 MATLAB定义一些字符串转换函数 例p41.m 字符串运算函数 eval命令是执行字符串的功能,可以执行一些操作 命令,运行已有的M函数,计算并赋值给其它变量。 例p43.m
函数文件中定义的变量为局部变量,在函数内有效。
全局变量的定义: global 变量名
避免使用特殊变量:
特殊变量 取值 NaN 不定量 如0/0
ans
pi eps flops inf
结果的缺省变量名
圆周率 计算机的最小数 浮点运算数 无穷大 如1/0
ij
nargin
基本虚数单位
函数的输入变量数目
nargout 函数的输出变量数目 realmin 最小的可用正实数
realmax 最大的可用正实数
2、 数据
MATLAB有多种数据类型。 MATLAB的数值计算都采用双精度浮点运算, 指定精度运算需用符号工具箱处理。在数值计算 中只能改变数值的显示格式。
改变数值显示格式的方法:
菜单方式:
File Preference中Command Window Text display Numeric format中设置。
基本的数据类型:
数据类型 举例 说明
double
char sparse cell struct uint8
[1 2;3 4]
‘hello’ speye(5) {17‘hello’eye(2)} a.day=12; a.color=‘red’; Uint8(magic(3))
双精度数值类型,最常用
字符数组,每字符16位 双精度稀疏矩阵,只存非0元素 细胞数组,元素可为不同类型、 维数
如:a=[1 2 3;4 5 6],b=[7 8 9] 矩阵转置 用A’如:aa=a’ 对于复数矩阵是进行Hermit转置,先对矩阵元素 转置,再逐项求取共轭数值。
矩阵大小的查询 [n,m]= size(A) 返回矩阵A的行数n,列数m n=length(A)=max(size(A)) 返回矩阵A的行 数、列数的最大值
3、常用特殊矩阵和矩阵函数
常用矩阵函数
命令 d=eig(A) 矩阵特征值 说明
[v,d]=eig(A) 矩阵特征值和特征向量
det(A)
inv(A) poly(A) trace(A) rank(A) orth(A)
行列式计算
求逆 特征多项式 对角元素之和 矩阵的秩 正交化
常用特殊矩阵
命令 A=[ ] 空矩阵 N维单位矩阵 全部元素都为1的矩阵 全部元素都为0的矩阵 元素为0到1之间均匀分布的随机矩阵 元素为零均值单位方差正态分布的随机矩阵 说明
②函数文件
用于把重复的程序段封装起来,完成复杂 任务,可以输入输出参数,输入输出变量可以 是标量、数组、矩阵或字符串,也可以没有输 入输出参数。
函数文件的笫一行总是以 “function”引导的 “函数申明行”。基本格式: function [y1,y2,…]=myfunc(x1,x2,…)
关键字
A=eye( n ) A=ones(n,m) A=zeros(n,m) A=rand(n,m) A=randn(n,m)
1.2.4 MATLAB程序设计
MATLAB被成为第四代编程语言,具有极高的编 程效率,而且简单易学。 一、M文件 分成命令文件和函数文件两种: ①命令文件 用于把需在命令窗口执行的命令放在一起便于修 改,无输入参数也无输出参数,比函数文件简单。 命令文件可对工作空间的变量进行操作,而且运行 后 ,所产生的所有变量都驻留在工作空间,可被其它 M文件或 SIMULINK直接引用,直到关闭MATLAB或 使用清除指令clear。
format 命令方式
注意:format 命令仅仅只能改变数据的显示 格式,MATLAB的数值计算都采用双精度浮点 运算。
3、 常用标点符号
,和 ;可用于隔开放在一行中的多条命令,或 者命令的末尾,注意区别: 逗号,显示运行结果 分号;不显示运行的结果 … 如果一行中无法写下一个完整命令,可在行 尾加入三个连续的点,表示命令余下的部分在下 一行出现。 百分号%之后的所有文字为注释,注释为单行型。
矩阵块操作
可进行元素更改、插入子块、提取子块、重排子块、 扩大子块等。
冒号“:”的应用:代表全部
冒号“:”在列标位置:代表全部的列 冒号“:”在行标位置:代表全部的行
2、矩阵运算
1)矩阵与标量的运算 矩阵与标量进行+ - 和乘方运算时,是完 成矩阵的每个元素对标量的运算。 如a=[1 2 3;4 5 6] , 要运算a1=a+2, a2=a-2, a3=a*2 , a4=a/2 ; 矩阵乘方时要求矩阵为方阵,如b=[2 4;1 5], b1=b^2 %求平方b*b b2=b^(-1) %求b的逆矩阵 b3=b^(0.2) %对b开5次方 p18.m
n=length(a)
for i=2:1:(n-1) %消元过程 for k=i:1:(n-1) m=a(k,i-1)/a(i-1,i-1); for j=1:1:n a(k,j)=a(k,j)-a(i-1,j)*m; end end end
%回代过程 for i=n-1:-1:1 f=0; for j=i+1:n-1 f=f+a(i,j)*x(j); end x(i)=(a(i,n)-f)/a(i,i); end g=x;
输出变量
函数名 输入变量
M函数文件有自己的工作空间,与MATLAB工作 空间分开,二者之间由输入输出变量联系; M函数除输入输出变量外都是局部变量,在该函 数返回后就自动清除掉了。若要在工作空间起作用, 则定义为全局变量,并且应在工作空间和M函数中都 要同时定义。 函数名和函数文件名最好统一,以免出错。
MATLAB的关系操作符可以用来比较两个大小相同的数组, 或者比较一个数组和一个标量。在与标量比较时,结果和数组大 小一样。 例p38
2) 逻辑操作符:定义按照“与”、“或”、“非”的关系表达
式
&(与) |(或) ~(非) 3) NaN、Inf和空矩阵 例p40 NaN(Not a Number)表示: 0/0 或 Inf-Inf Inf表示: 1/0或计算中的数值上溢产生的
• 典型 M函数文件的结构如下 :
函数申明行:位于函数文件的首行,以关键字 function 开头,函数名以及函数的输入输出变量都在 这一行被定义。 笫一注释行:紧随函数申明行之后以%开头笫一注释行。 该行供lookfor关键词查询和 help在线帮助使用 在线帮助文本区 :笫一注释行及其之后的连续以%开 头的所有注释行构成整个在线帮助文本。 编写和修改记录:与在线帮助文本区相隔一个“空”行, 也以%开头,标志编写及修改该M文件的作者日期等 。 函数体:为清晰起见,与前面的注释以“空”行相隔。 例:函数myguass.m 调用testguass.m
filename .mat
save filename x y z –ascii 以8位ASCII代替二进制格式 与save相对应,可用load命令加载数据。 3、低级文件输入输出命令 常用基本命令 例inout.m
%inout.m
f1=fopen('test.txt','r') p=fscanf(f1,'%c') f2=fopen('C:\Documents and Settings\Administrator\桌 面\教学\simulation\程序 \chapter1\name1.m','w'); fprintf(f2,'%s15\n,%9.5f\n,%9. 5f\n,%4(3.5f)\n',p); fclose('all');
4、简单数学运算
MATLAB可以象计算器一样进行一些简单 的数学运算,如可直接输入16*12.2+25*1.82 计 算。常用运算符有: MATLAB支持常用的基本数学函数,要注 意只对弧度操作,如sin(30*pi/180)=0.5。 复数运算不需要特殊处理,用i、j和sqt(-x)表 示,运算时与实数运算形式相同。还可以用 real、imag、abs、angle命令来表示一个复数 的实部、虚部、幅值和相角。
switch 表达式 case 值1 命令串1 case 值2 命令串2 …. otherwise 命令串 end myswitch.m
3、分支结构:
if 条件表达式1 命令串1 elseif 条件表达式2 命令串2 …. else 命令串 end myif.m
三.关系和逻辑运算
1)关系操作符 非零数值为真(1)、零为假(0 ) <(小于) <=(小于或等于) >(大于) >=(大于或等于) = =(等于) ~=(不等于)
(3)矩阵除法运算 有左除和右除两种: 左除: A\B=A-1B,A为方阵(X=A\B是A*X=B的解) 右除: A/B=AB-1,B为方阵(X=A/B是X*B=A的解) 通常A\B≠A/B p20.m
(4).矩阵点运算
矩阵有* \ / ^,向量有 .* .\ ./ .^。但矩阵也可用 点运算,是矩阵对应元素之间的直接运算(element by element)。点乘、点除要求矩阵的维数相同。 P21.m
全局变量 应在工作 空间和M 函数中都 要同时定 义。
testguass.m %命令文件调用myguass.m函数文件 a=[1 2 3;3 4 8] x=myguass(a)
二.程序结构和控制语句(主要是三种结构):
1、顺序结构 2、循环结构: 固定次数的for和不定次数的while
for 循环变量=数组范围 命令串 end myfor.m while 条件表达式 命令串 end mywhile.m
1.2.3 矩阵运算
MATLAB最基Baidu Nhomakorabea、也是最重要的功能就是进行实数 矩阵或者复数矩阵的运算。
向量可作为矩阵的一行或者一列,标量(一个数) 优势则可以作为只含有一个元素的矩阵,故向量和标 量都可以作为特殊矩阵来处理。矩阵的操作和命令和 我们平时使用的形式很相似。
1、矩阵表示和块操作
矩阵表达式
用[ ]表示,矩阵元素间用空格或逗号隔开,行用分号隔开。
2.矩阵与矩阵的运算
(1).矩阵的加减运算 矩阵的维数完全相同时才能进行加减运算, 如 a=[1 2 3;4 5 6], b=[7;8;9], c=[10 11 12]’ 如计算 c1=a+b; c2=b+c; 前者由于a b 维数不等出错 p19.m
(2).矩阵乘法运算 矩阵的维数相容(a的列数=b的行数)时才 能进行a*b的乘法运算, 若a=[1 2 3;4 5 6], b=[1 2;3 4],则不相容。
主讲教师:姜萍
1.2.2 MATLAB基本设计
1、变量
变量在使用前不需定义维数和大小。
命名规则:以字母打头、不含标点符号、最多不超过 19个字符,区分字母的大小写,如X1、 x1、 a、 A 等。另外要避免使用特殊变量。 变量可按需要定义成全局变量和局部变量:
function g=myguass(a)
%The Solution of Linear Systems AX=B by Guassian Elimination %input a=[A|B] is augmented matrix %output g=x is the result %It was edited in Mar 20,2002 and modified in May 3,2003 by JP
五.数据的输入输出
1、数据不多时,可由FileSave Workspace As保存 工作空间当前所有变量(保存为***.mat)。类似地, 由File Import Data 可装载数据。 2、save、load命令:以二进制格式保存和读入 save 将工作空间所有变量以二进制格式存入matlab.mat save filename 将所有变量以二进制格式存入filename.mat save filename x y z 将变量x y z以二进制格式存入
四. 字符运算
可定义一串文字并进行字符串的处理与运算。字符 串是ASCII码的数值数组,每个字符占用2个字节存储。 定义格式:用单引号括起来‘ ’ x=‘Matlab is a software’ 字符串的转换 MATLAB定义一些字符串转换函数 例p41.m 字符串运算函数 eval命令是执行字符串的功能,可以执行一些操作 命令,运行已有的M函数,计算并赋值给其它变量。 例p43.m
函数文件中定义的变量为局部变量,在函数内有效。
全局变量的定义: global 变量名
避免使用特殊变量:
特殊变量 取值 NaN 不定量 如0/0
ans
pi eps flops inf
结果的缺省变量名
圆周率 计算机的最小数 浮点运算数 无穷大 如1/0
ij
nargin
基本虚数单位
函数的输入变量数目
nargout 函数的输出变量数目 realmin 最小的可用正实数
realmax 最大的可用正实数
2、 数据
MATLAB有多种数据类型。 MATLAB的数值计算都采用双精度浮点运算, 指定精度运算需用符号工具箱处理。在数值计算 中只能改变数值的显示格式。
改变数值显示格式的方法:
菜单方式:
File Preference中Command Window Text display Numeric format中设置。
基本的数据类型:
数据类型 举例 说明
double
char sparse cell struct uint8
[1 2;3 4]
‘hello’ speye(5) {17‘hello’eye(2)} a.day=12; a.color=‘red’; Uint8(magic(3))
双精度数值类型,最常用
字符数组,每字符16位 双精度稀疏矩阵,只存非0元素 细胞数组,元素可为不同类型、 维数
如:a=[1 2 3;4 5 6],b=[7 8 9] 矩阵转置 用A’如:aa=a’ 对于复数矩阵是进行Hermit转置,先对矩阵元素 转置,再逐项求取共轭数值。
矩阵大小的查询 [n,m]= size(A) 返回矩阵A的行数n,列数m n=length(A)=max(size(A)) 返回矩阵A的行 数、列数的最大值
3、常用特殊矩阵和矩阵函数
常用矩阵函数
命令 d=eig(A) 矩阵特征值 说明
[v,d]=eig(A) 矩阵特征值和特征向量
det(A)
inv(A) poly(A) trace(A) rank(A) orth(A)
行列式计算
求逆 特征多项式 对角元素之和 矩阵的秩 正交化
常用特殊矩阵
命令 A=[ ] 空矩阵 N维单位矩阵 全部元素都为1的矩阵 全部元素都为0的矩阵 元素为0到1之间均匀分布的随机矩阵 元素为零均值单位方差正态分布的随机矩阵 说明
②函数文件
用于把重复的程序段封装起来,完成复杂 任务,可以输入输出参数,输入输出变量可以 是标量、数组、矩阵或字符串,也可以没有输 入输出参数。
函数文件的笫一行总是以 “function”引导的 “函数申明行”。基本格式: function [y1,y2,…]=myfunc(x1,x2,…)
关键字
A=eye( n ) A=ones(n,m) A=zeros(n,m) A=rand(n,m) A=randn(n,m)
1.2.4 MATLAB程序设计
MATLAB被成为第四代编程语言,具有极高的编 程效率,而且简单易学。 一、M文件 分成命令文件和函数文件两种: ①命令文件 用于把需在命令窗口执行的命令放在一起便于修 改,无输入参数也无输出参数,比函数文件简单。 命令文件可对工作空间的变量进行操作,而且运行 后 ,所产生的所有变量都驻留在工作空间,可被其它 M文件或 SIMULINK直接引用,直到关闭MATLAB或 使用清除指令clear。
format 命令方式
注意:format 命令仅仅只能改变数据的显示 格式,MATLAB的数值计算都采用双精度浮点 运算。
3、 常用标点符号
,和 ;可用于隔开放在一行中的多条命令,或 者命令的末尾,注意区别: 逗号,显示运行结果 分号;不显示运行的结果 … 如果一行中无法写下一个完整命令,可在行 尾加入三个连续的点,表示命令余下的部分在下 一行出现。 百分号%之后的所有文字为注释,注释为单行型。
矩阵块操作
可进行元素更改、插入子块、提取子块、重排子块、 扩大子块等。
冒号“:”的应用:代表全部
冒号“:”在列标位置:代表全部的列 冒号“:”在行标位置:代表全部的行
2、矩阵运算
1)矩阵与标量的运算 矩阵与标量进行+ - 和乘方运算时,是完 成矩阵的每个元素对标量的运算。 如a=[1 2 3;4 5 6] , 要运算a1=a+2, a2=a-2, a3=a*2 , a4=a/2 ; 矩阵乘方时要求矩阵为方阵,如b=[2 4;1 5], b1=b^2 %求平方b*b b2=b^(-1) %求b的逆矩阵 b3=b^(0.2) %对b开5次方 p18.m
n=length(a)
for i=2:1:(n-1) %消元过程 for k=i:1:(n-1) m=a(k,i-1)/a(i-1,i-1); for j=1:1:n a(k,j)=a(k,j)-a(i-1,j)*m; end end end
%回代过程 for i=n-1:-1:1 f=0; for j=i+1:n-1 f=f+a(i,j)*x(j); end x(i)=(a(i,n)-f)/a(i,i); end g=x;
输出变量
函数名 输入变量
M函数文件有自己的工作空间,与MATLAB工作 空间分开,二者之间由输入输出变量联系; M函数除输入输出变量外都是局部变量,在该函 数返回后就自动清除掉了。若要在工作空间起作用, 则定义为全局变量,并且应在工作空间和M函数中都 要同时定义。 函数名和函数文件名最好统一,以免出错。
MATLAB的关系操作符可以用来比较两个大小相同的数组, 或者比较一个数组和一个标量。在与标量比较时,结果和数组大 小一样。 例p38
2) 逻辑操作符:定义按照“与”、“或”、“非”的关系表达
式
&(与) |(或) ~(非) 3) NaN、Inf和空矩阵 例p40 NaN(Not a Number)表示: 0/0 或 Inf-Inf Inf表示: 1/0或计算中的数值上溢产生的
• 典型 M函数文件的结构如下 :
函数申明行:位于函数文件的首行,以关键字 function 开头,函数名以及函数的输入输出变量都在 这一行被定义。 笫一注释行:紧随函数申明行之后以%开头笫一注释行。 该行供lookfor关键词查询和 help在线帮助使用 在线帮助文本区 :笫一注释行及其之后的连续以%开 头的所有注释行构成整个在线帮助文本。 编写和修改记录:与在线帮助文本区相隔一个“空”行, 也以%开头,标志编写及修改该M文件的作者日期等 。 函数体:为清晰起见,与前面的注释以“空”行相隔。 例:函数myguass.m 调用testguass.m
filename .mat
save filename x y z –ascii 以8位ASCII代替二进制格式 与save相对应,可用load命令加载数据。 3、低级文件输入输出命令 常用基本命令 例inout.m
%inout.m
f1=fopen('test.txt','r') p=fscanf(f1,'%c') f2=fopen('C:\Documents and Settings\Administrator\桌 面\教学\simulation\程序 \chapter1\name1.m','w'); fprintf(f2,'%s15\n,%9.5f\n,%9. 5f\n,%4(3.5f)\n',p); fclose('all');
4、简单数学运算
MATLAB可以象计算器一样进行一些简单 的数学运算,如可直接输入16*12.2+25*1.82 计 算。常用运算符有: MATLAB支持常用的基本数学函数,要注 意只对弧度操作,如sin(30*pi/180)=0.5。 复数运算不需要特殊处理,用i、j和sqt(-x)表 示,运算时与实数运算形式相同。还可以用 real、imag、abs、angle命令来表示一个复数 的实部、虚部、幅值和相角。
switch 表达式 case 值1 命令串1 case 值2 命令串2 …. otherwise 命令串 end myswitch.m
3、分支结构:
if 条件表达式1 命令串1 elseif 条件表达式2 命令串2 …. else 命令串 end myif.m
三.关系和逻辑运算
1)关系操作符 非零数值为真(1)、零为假(0 ) <(小于) <=(小于或等于) >(大于) >=(大于或等于) = =(等于) ~=(不等于)
(3)矩阵除法运算 有左除和右除两种: 左除: A\B=A-1B,A为方阵(X=A\B是A*X=B的解) 右除: A/B=AB-1,B为方阵(X=A/B是X*B=A的解) 通常A\B≠A/B p20.m
(4).矩阵点运算
矩阵有* \ / ^,向量有 .* .\ ./ .^。但矩阵也可用 点运算,是矩阵对应元素之间的直接运算(element by element)。点乘、点除要求矩阵的维数相同。 P21.m
全局变量 应在工作 空间和M 函数中都 要同时定 义。
testguass.m %命令文件调用myguass.m函数文件 a=[1 2 3;3 4 8] x=myguass(a)
二.程序结构和控制语句(主要是三种结构):
1、顺序结构 2、循环结构: 固定次数的for和不定次数的while
for 循环变量=数组范围 命令串 end myfor.m while 条件表达式 命令串 end mywhile.m
1.2.3 矩阵运算
MATLAB最基Baidu Nhomakorabea、也是最重要的功能就是进行实数 矩阵或者复数矩阵的运算。
向量可作为矩阵的一行或者一列,标量(一个数) 优势则可以作为只含有一个元素的矩阵,故向量和标 量都可以作为特殊矩阵来处理。矩阵的操作和命令和 我们平时使用的形式很相似。
1、矩阵表示和块操作
矩阵表达式
用[ ]表示,矩阵元素间用空格或逗号隔开,行用分号隔开。
2.矩阵与矩阵的运算
(1).矩阵的加减运算 矩阵的维数完全相同时才能进行加减运算, 如 a=[1 2 3;4 5 6], b=[7;8;9], c=[10 11 12]’ 如计算 c1=a+b; c2=b+c; 前者由于a b 维数不等出错 p19.m
(2).矩阵乘法运算 矩阵的维数相容(a的列数=b的行数)时才 能进行a*b的乘法运算, 若a=[1 2 3;4 5 6], b=[1 2;3 4],则不相容。