第2章MATLAB语言基础

合集下载

第二章 MATLAB基础

第二章 MATLAB基础
27
3 )向量是一个数学量,一般高级语言中也未引入, 它可视为矩阵的特例。从MATLAB的工作区可以查 看到:一个 n 维的行向量是一个 1 × n 阶的矩阵,而 一个n维的列向量则当成n×1阶的矩阵。 如A=[1 2 3 4]就是一个4维的行向量。也可看成是 一个一维数组,还要看成是一个1×4阶的矩阵。
3
数据类型转换函 数 uint8 uint16 uint32 uint64 int8 int16 int32 int64
说 明 无符号8位整数 无符号16位整数 无符号32位整数 无符号64位整数 有符号8位整数 有符号16位整数 有符号32位整数 有符号64位整数
字节数 1 2 4 8 1 2 4 8
22
【例 2.8】变量赋值 >> a=3.14 a= 3.1400 >> class(a) %函数class用来是判断变量数据类 型的 ans = double %变量a是双精度的浮点型数据
23
>> a='hello!' hello! >> class(a) ans = char
%变量a重新赋值
13
>> whos Name Size a 1x1 x 1x1 y 1x1 z 1x1
Bytes Class Attributes 16 double complex 4 int32 4 int32 8 int32 complex
14
2.2MATLAB的常量及变量
2.2.1常量 常量是程序语句中取不变值的那些量。如表达式 y=0.314*x,其中就包含一个0.314这样的数值常数,它 便是一个数值常量。而在另一表达式s='Hello'中,单引 号内的英文字符串“Hello”则是一个字符串常量。

第2章 MATLAB的基础知识

第2章 MATLAB的基础知识

a=[1 2 1;2 2 1;2 1 2]; b=[1;2;3]; a/b %矩阵右除
运行程序,得到结果:
??? Error using ==> mrdivide Matrix dimensions must agree.
重新输入语句
a\b
%矩阵左除 ans = 1.0000 -0.3333 0.6667
运行程序,得到结果:
c= 0 0 1 1 1 0
说明 对于复数运算,“= =”与“~ =”运算,既比较实部, 又比较虚部。而其他运算仅比较实部。关系运算同样也可用于 常量与矩阵的比较,在这种情况下,该常量与矩阵的每一个元 素进行比较,其结果是一个与矩阵同维数的0、1矩阵。
逻辑操作符
逻辑操作符 说 明 相对应函数
-0.1667 0 0
(3)矩阵特征值运算
矩阵条件数cond( ) 矩阵的秩rank() 矩阵特征值eig ( )
矩阵范数norm( ) 矩阵的迹trace ( ) 矩阵奇异值svd ( )
例2-7 分别计算矩阵a的有关特征参数。输入以下 MATLAB语句
a=[1 2 3;4 5 6;7 8 0] [cond(a),norm(a),rank(a)]
2.MATLAB工作环境
图形窗口“Figure”
M文件窗口
3.MATLAB的M文件
所谓M文件,就是用户把要实现的命令写在一个 以.m为扩展名的文件中
M文件有两种格式(统称为M文件) 函数式M文件 程序式M文件 程序式M文件用于把很多需要在命令窗口输入的命 令放在一起,就是命令的简单叠加 函数式M文件用于把重复的程序段封装成函数供用 户调用。
&
|
逻辑与
逻辑或
and(a,b)

Matlab工程应用基础_2_2Matlab语言程序设计

Matlab工程应用基础_2_2Matlab语言程序设计

1、 Matlab数据类型 变量和常量 数字变量的格式 字符串 单元型变量 结构型变量 矩阵、向量 多项式
a) 变量和常量 变量(包括函数)的命名规则:由英文字母、数字和下划线 混合组成,不得包含空格和标点 ;第一个字符必须是英 文字母,最多包括31个字符; 对字母的大小写敏感。 局部变量和全局变量 永久变量(常量) 只能在某一函数体内使用,而不能从其他函数和 Matlab 工作空间访问的变量,就是局部变量。 在几个函数及M atlab函数中都能使用的变量就是全局变 量。 (全局变量名应尽可能大写,并由globe声明)
第2章 Matlab语言程序设计
关系操作符
逻辑操作符
第2章 Matlab语言程序设计
MATLAB 的关系操作符运算法则: 当两个变量是标量 a 和 b 时 ◆若 a、b 之间关系成立,则关系运算结果为 1; ◆若 a、b 之间关系不成立,则关系运算结果为 0; 当两个维数相同的矩阵 A 和 B 比较时,矩阵 A、B 比 较的是相同位置的元素,按标量的运算规则逐个进行。 关系运算的结果是一个和 A维数相同的矩阵,它的元 素由 0 和 1 组成。 当一个矩阵A 和一个标量 b 比较时,把标量 b 和矩阵 A 的每一个元素按标量关系运算规则逐个比较。关系 运算的结果是一个和数组 A维数相同的矩阵,它是由 0 和 1 组成。 优先级 由高到低为算术运算、关系运算和逻辑运算。
ans = -0.9918 >> y=sin(5*t+6) y= -0.9918
第2章 Matlab语言程序设计
表达式由变量名、运算符、数字和函数名组成。 表达式将按常规的优先纽从左至右执行运算; 优先级的规定是指数运算级别最高,乘除运算次之; 括号可以改变运算顺序; 书写表达式时,赋值符“=”和运算符两侧允许有 空格,以增加可读性。但在复数或符号表达式中要 尽量避免空格,以防出错; 表达式的末尾加 “;” 时,Matlab系统只把数值赋 给变量, 不显示计算结果;不加“;”时, Matlab 系统将会在该条语句的下面直接显示运算结果。

第二章_MATLAB语言基础_第1节-赵亦欣

第二章_MATLAB语言基础_第1节-赵亦欣
ans的值将在下一条表达式语句执行后被刷新。
第2章 MATLAB语言基础
【例2.8】 表达式语句。 >> sqrt(2)*exp(-1*3) ans = 0.0704 >> 8*3+6/4 ans = 25.5000
表达式语句 运算结果 执行下一条 表达式语句 后,结果将 被刷新
第2章 MATLAB语言基础
第2章 MATLAB语言基础
2.1 基础知识
2.1.3 变量和语句
变量名区分字母大小写;不超过31个字 符,31个以后的字符将被忽略,字符之间不 能有空格;必须以字母打头,之后可以是任意 字母、数字或下画线;不允许使用标点符号。
第2章 MATLAB语言基础
MATLAB的一条命令行就是一条语句,
格式与书写数学表达式相近。 在命令窗输入语句,该语句可被解释运 行并给出运行结果。
第2章 MATLAB语言基础
(1)永久变量不能用clear命令清除; (2)永久变量不响应Who, Whos命令; (3)永久变量可以等于表2-1中的值; (4)被赋值的永久变量,在clear命令清除内 存或命令窗关闭再打开后,将被设为默认值;
(5)允许被0除。
第2章 MATLAB语言基础
2.1 基础知识
第2章 MATLAB语言基础
【例2.11】复数矩阵的生成及运算。 >> A=[1 2; 3 4]+[5 6; 7 8]*I % 复数矩阵的输入。 分别由实部矩阵和虚部矩阵组合而成 A= 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i >> B=[1+2i 3+4i; 5+6i 7+8i] % 复数矩阵的输入。 直接由复数构成矩阵 B= 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i >> C=A*B % 复数矩阵相乘。 复数矩阵乘法, 1.0e+002表 示标量100,矩阵运算中,存在直 C= 角坐标和极坐标之间的转换 1.0e+002 * -0.3500 + 0.4900i -0.5100 + 0.7700i -0.3900 + 0.7700i -0.5500 + 1.2100i

控制系统仿真_薛定宇第二章_MATLAB语言程序设计基础

控制系统仿真_薛定宇第二章_MATLAB语言程序设计基础

控制系统仿真与CAD 国家级精品课程
2014-12-31
24/70 24
2.4.4 匿名函数与inline函数

不用编写*.m,定义函数的方法
可以动态地定义函数,在科学运算中有用 二者功能重复,后者远差于前者,不再使用


匿名函数: 举例
控制系统仿真与CAD 国家级精品课程
2014-12-31

控制系统仿真与CAD 国家级精品课程
2014-12-31
3/70 3
2.1.1 常量与变量

常量(保留字符串)
eps: 机器的浮点运算误差限,默认值 i和j:虚数单位,-1的平方根,i=sqrt(-1) Inf: 无穷大量,-Inf为负无穷大 NaN:不定式(Not a Number) pi:圆周率p的双精度浮点表示
25/70 25
2.5 二维图形绘制



可以绘制出各种二维曲线 可以由数据绘图,也可以由格式绘图 本节主要内容
基本二维图形绘制语句 带有其他选项的绘图函数 二维曲线的标注方法 在MATLAB图形上添加文字标注 特殊图形绘制函数及举例 隐函数的曲线绘制

控制系统仿真与CAD 国家级精品课程


符号型数据结构

syms 命令申明符号变量
控制系统仿真与CAD 国家级精品课程
2014-12-31
5/70 5

vpa(A) 显示符号变量

例2-1 显示e的前300位 其他数据结构



int8() 、int16() 、int32() 、uint16() 和 uint32() 字符串型数据:MATLAB字符串是用单引号括起来的 多维数组:三维数组是一般矩阵的直接拓展。 单元数组:多变量系统的频域响应数据存储 类与对象:传递函数对象、状态方程对象

第二章 MATLAB语言的使用与程序设计

第二章 MATLAB语言的使用与程序设计

命令历史窗口:显示已执行过的命令。在窗口的某一命令上单击鼠标 右键,会弹出菜单,对所选命令进行操作。


当前路径窗口:提供了当前路径文件的操作
演示
MATLAB的搜索路径
搜索路径是一系列文件路径的组合。当程序和命令执行 时, MATLAB 在搜索路径中查找程序或命令运行所需的函数文 件。 MATLAB 在执行搜索时按照规定的顺序。如:在命令窗口 中输入example,MATLAB将按下面的步骤来处理: 1.检查example是不是一个变量,如果是,则返回变量的值;
本章重点:
MATLAB工作环境掌握 主要文件类型及常用命令
矩阵、变量、表达式、常用函数
MATLAB语言的基本语句结构及程序调试方法
一、MATLAB系统简介
MATLAB的主要组成部分
1.MATLAB语言体系:MATLAB 语言是一种以矩阵运算为基础的高级 语言,具有条件控制、函数调用、数据结构、输入输出及面向对象等 程序语言特征,可以进行程序设计。
6 )对矩阵的特殊操作: rot90(a) 将 a 矩阵旋转 90 度、 fliplr(a) 将 a 矩阵的列反序、 flipud(a) 将 a 矩阵的行反序、diag(a) 将向量 a 构 成对角阵( 元素放在主对角线上 )---a 为向量、triu(a) 提取矩阵的上 三角部分、reshape改变矩阵的阶数,按列的顺序重排。
逻辑运算符: 在MATLAB中,逻辑运算符有3种。 & 逻辑与。当运算双方对应元素都为非零时; 结果为1,否则,结果为0。
| 逻辑或。当运算双方对应元素有一个为非零 时;结果为1,否则,结果为0。
~ 结果为0。 逻辑非。当元素的值为 0 时,结果为 1 ,否则,
例: a=[1 0 3;0 –1 6] , b=[-1 0 0;0 5 0.3] ,计算两矩

第二章 MATLAB语言基础(10)

第二章  MATLAB语言基础(10)

第二章 MATLAB语言基础教学重点:矩阵运算、MATLAB程序设计教学难点:基本算术运算与点运算、switch语句、try语句、for语句MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。

矩阵是MATLAB最基本、最重要的数据对象,MA TLAB的大部分运算或命令都是在矩阵运算的意义下执行的,而且这种运算定义在复数域上。

一、MATLAB编程基础1.变量MATLAB对变量名称有以下三个规定:●变量名称开头必须是英文字母,后面可以接英文字母、下划线、数字●区分大小写●变量名称长度应不超过31个字符2.预定义变量在MA TLAB中,有一些预先定义好的保留数值和函数供用户使用,这些特殊函数和数3.基本赋值语句MATLAB最基本的赋值语句结构为:变量名列表=表达式表达式可以用分号结束,也可以用逗号或换行号结束,但它们的含义不同。

如果用分号结束,则程序运行时等式左边的变量的运行结果将不在屏幕上显示出来,否则将把左边变量的运行结果全部显示出来。

4.工作空间的管理1)who和whos可以用who或whos命令来查看程序中使用的变量表,who命令只返回一个简单的变量列表,whos命令返回全部变量的变量名(Name)、大小(Size)、元素数(Element)、字节数(Byte)、表现密度(Density)、有无复数(Complex),除了对单个变量给出相应的信息外,还将给出整个变量空间的占用情况。

2)clear可以调用clear命令来删除其中的一些不再使用的变量,这样可以使得整个工作空间更简洁。

3)exist如果用户想查询在当前的工作空间中是否存在一个变量时,可以使用exist命令来实现,改函数的调用格式为:i=exist(‘A’);返回值i表示变量名存在的形式,含义如下:i=1:表示在当前工作空间中存在一个变量名为A的矩阵i=2:表示在MA TLAB的工作路径下存在一个名为A.m的文件i=3:表示在MA TLAB的工作路径下存在一个名为A.mex的文件i=4:表示存在一个编译号的名为A.m的SIMULINK文件i=5:表示存在一个MATLAB函数A( )i=0:表示不存在和A有关的变量和文件4)size( )、length( )、ndims( )size( )返回矩阵的行数和列数length( )返回矩阵行数和列数的最大值ndims( )给出矩阵的维数5.字符串在MA TLAB中,字符串是用单撇号括起来的字符序列。

第2章_MATLAB的基本操作

第2章_MATLAB的基本操作
浮点数
浮点数包括单精度(4个字节)和双精度(8个字 节),默认为双精度。
single :将其它类型的数据转换成单精度浮点数。 double :将其它类型的数据转换成双精度浮点数。
浮点数与其它类型数据运算表
operand single double int/uint char logical X single single single single single double single double int/uint double double
MATLAB数据类型
例:
MATLAB数据类型
细胞变量的定义
可以通过以下两种方式定义一个细胞变量:
用赋值语句直接定义; 由 cell 函数预先分配存储空间,然后对细
胞的每个元素逐个赋值。
MATLAB数据类型
MATLAB数据类型
细胞变量可以嵌套定义
MATLAB数据类型
细胞变量的元素的引用
MATLAB数据类型
str2num:将字符数组转换为
数值数组
abs,double,char按照 ASCII码 转换; num2str,int2str,mat2str,str2num 直接转换。
MATLAB数据类型
字符串的连接
水平连接:strcat 或 中括号中用逗号连接
在中括号中直接水平连 接,结果中包括原字符 串结尾处的空格。 用 strcat 连接,结果 中忽略原字符串结尾处 的空格。
把数字直接转换为字符 串,每个数字为一个独 立的字符串。
把数字取整后转换为字 符串,注意和 num2str 的区别。
把矩阵转换为一个字符 串,方括号、分号和空 格都是其元素。
MATLAB数据类型

《控制系统计算机辅助设计MATLAB语言与应用第2版》薛定宇_课后习题答案

《控制系统计算机辅助设计MATLAB语言与应用第2版》薛定宇_课后习题答案
polar(t,r);axis('square')
【17】
(1)z=xy
>>[x,y]=meshgrid(-3:0.01:3,-3:0.01:3);
z=x.*y;
mesh(x,y,z);
>> contour3(x,y,z,50);
(1)z=sin(xy)
>> [x,y]=meshgrid(-3:0.01:3,-3:0.01:3);
【2】
相应的MATLAB命令:B=A(2:2:end,:)
>>A=magic(8)
A=
642361606757
955541213 515016
174746 202143 4224
4026273736 303133
323435 292838 3925
4123224445191848
491514 5253 11 10 56
【10】
function y=fib(k)
if nargin~=1,error('出错:输入变量个数过多,输入变量个数只允许为1!');endﻭif nargout>1,error('出错:输出变量个数过多!');end
if k<=0,error('出错:输入序列应为正整数!');endﻭifk==1|k==2,y=1;ﻭelsey=fib(k-1)+fib(k-2);endﻭend
858 5954 62 631
>>B=A(2:2:end,:)
B =
955 541213515016
40262737 36303133
41232244451918 48
858 5954 62631

控制系统计算机辅助设计:MATLAB语言与应用(第2版)薛定宇-课后习题答案

控制系统计算机辅助设计:MATLAB语言与应用(第2版)薛定宇-课后习题答案

第1章控制系统计算机辅助设计概述第2章 MATLAB语言程序设计基础第3章线性控制系统的数学模型第4章线性控制系统的计算机辅助分析第5章 Simulink在系统仿真中的应用第6章控制系统计算机辅助设计第1章控制系统计算机辅助设计概述【1】已阅,略【2】已阅,略【3】已经掌握help命令和Help菜单的使用方法【4】区别:MATLAB语言实现矩阵的运算非常简单迅速,且效率很高,而用其他通用语言则不然,很多通用语言所实现的矩阵运算都是对矩阵维数具有一点限制的,即使限制稍小的,但凡维数过大,就会造成运算上的溢出出错或者运算出错,甚至无法处理数据的负面结果【5】【8】(1)输入激励为正弦信号(2)输入激励为脉冲模拟信号(3)输入激励为时钟信号(4) 输入激励为随机信号(5) 输入激励为阶跃信号δ=0.3δ=0.05δ=0.7结论:随着非线性环节的死区增大,阶跃响应曲线的范围逐渐被压缩,可以想象当死区δ足够大时,将不再会有任何响应产生。

所以可以得到结论,在该非线性系统中,死区的大小可以改变阶跃响应的幅值和超调量。

死区越大,幅值、超调量将越小,而调整时间几乎不受其影响第2章 MATLAB语言程序设计基础【1】>> A=[1 2 3 4;4 3 2 1;2 3 4 1;3 2 4 1]A =1 2 3 44 3 2 12 3 4 13 24 1>> B=[1+4i,2+3i,3+2i,4+i;4+i,3+2i,2+3i,1+4i;2+3i,3+2i,4+i,1+4i;3+2i,2+3i,4+i,1+4i]B =1.0000 + 4.0000i2.0000 +3.0000i 3.0000 + 2.0000i4.0000 + 1.0000i4.0000 + 1.0000i 3.0000 + 2.0000i 2.0000 + 3.0000i 1.0000 + 4.0000i2.0000 +3.0000i 3.0000 + 2.0000i4.0000 + 1.0000i 1.0000 + 4.0000i3.0000 + 2.0000i 2.0000 + 3.0000i4.0000 + 1.0000i 1.0000 + 4.0000i>> A(5,6)=5A =1 2 3 4 0 04 3 2 1 0 02 3 4 1 0 03 24 1 0 00 0 0 0 0 5∴若给出命令A(5,6)=5则矩阵A的第5行6列将会赋值为5,且其余空出部分均补上0作为新的矩阵A,此时其阶数为5×6【2】相应的MATLAB命令:B=A(2:2:end,:)>> A=magic(8)A =64 2 3 61 60 6 7 579 55 54 12 13 51 50 1617 47 46 20 21 43 42 2440 26 27 37 36 30 31 3332 34 35 29 28 38 39 2541 23 22 44 45 19 18 4849 15 14 52 53 11 10 568 58 59 5 4 62 63 1>> B=A(2:2:end,:)B =9 55 54 12 13 51 50 1640 26 27 37 36 30 31 3341 23 22 44 45 19 18 488 58 59 5 4 62 63 1∴从上面的运行结果可以看出,该命令的结果是正确的【3】>> syms x s; f=x^5+3*x^4+4*x^3+2*x^2+3*x+6f =x^5 + 3*x^4 + 4*x^3 + 2*x^2 + 3*x + 6>> [f1,m]=simple(subs(f,x,(s-1)/(s+1)))f1 =19 - (72*s^4 + 120*s^3 + 136*s^2 + 72*s + 16)/(s + 1)^5m =simplify(100)【4】>> i=0:63; s=sum(2.^sym(i))s =0615【5】>> for i=1:120if(i==1|i==2) a(i)=1;else a(i)=a(i-1)+a(i-2);endif(i==120) a=sym(a); disp(a); endend[ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, , , , , 5, 1, 6, 7, 3, 70, 03, 73, 76, 49, , 074, 099, 173, 272, 2445, 3717, 6162, 9879, 6041, 55920, 81961, 37881, 19842, 106, 177565, 035288, 212853, 248141, 0460994, , 1170129, 1879264, 8065, , , , 00884757, , 0, 5, 6, 1, 0, 88, , 673, 58, 931, , 120, , 029, 4, 2, 9905, 3072, 2977, 46049, 69026, 15075, 40, 99176, 083277, 082453, 165730, 248183, 7576, 62096, , 4738105, 5814114, 9, 186333, , 284885, 9, 3488322, 9, 0, 0]【6】>>k=1;for i=2:1000for j=2:iif rem(i,j)==0if j<i, break;endif j==i, A(k)=i; k=k+1; break; endendendenddisp(A);Columns 1 through 132 3 5 7 11 13 17 19 23 29 31 37 41 Columns 14 through 2643 47 53 59 61 67 71 73 79 83 89 97 101 Columns 27 through 39103 107 109 113 127 131 137 139 149 151 157 163 167 Columns 40 through 52173 179 181 191 193 197 199 211 223 227 229 233 239 Columns 53 through 65241 251 257 263 269 271 277 281 283 293 307 311 313 Columns 66 through 78317 331 337 347 349 353 359 367 373 379 383 389 397 Columns 79 through 91401 409 419 421 431 433 439 443 449 457 461 463 467 Columns 92 through 104479 487 491 499 503 509 521 523 541 547 557 563 569 Columns 105 through 117571 577 587 593 599 601 607 613 617 619 631 641 643 Columns 118 through 130647 653 659 661 673 677 683 691 701 709 719 727 733 Columns 131 through 143739 743 751 757 761 769 773 787 797 809 811 821 823 Columns 144 through 156827 829 839 853 857 859 863 877 881 883 887 907 911 Columns 157 through 168919 929 937 941 947 953 967 971 977 983 991 997【7】说明:h和D在MATLAB中均应赋值,否则将无法实现相应的分段函数功能syms x; h=input(‘h=’); D=input(‘D=’);y=h.*(x>D)+(h.*x/D).*(abs(x)<=D)-h.*(x<-D)【10】function y=fib(k)if nargin~=1,error('出错:输入变量个数过多,输入变量个数只允许为1!');endif nargout>1,error('出错:输出变量个数过多!');endif k<=0,error('出错:输入序列应为正整数!');endif k==1|k==2,y=1;else y=fib(k-1)+fib(k-2);endend【13】【14】>> t=[-1:0.001:-0.2,-0.1999:0.0001:0.1999,0.2:0.001:1];y=sin(1./t);plot(t,y);grid on;【15】(1) >> t=-2*pi:0.01:2*pi;r=1.0013*t.^2;polar(t,r);axis('square')(2) >> t=-2*pi:0.001:2*pi;r=cos(7*t/2);polar(t,r);axis('square')(3) >> t=-2*pi:0.001:2*pi;r=sin(t)./t;polar(t,r);axis('square')(4) >> t=-2*pi:0.001:2*pi;r=1-cos(7*t).^3;polar(t,r);axis('square')【17】(1)z=xy>> [x,y]=meshgrid(-3:0.01:3,-3:0.01:3);z=x.*y;mesh(x,y,z);>> contour3(x,y,z,50);(1)z=sin(xy)>> [x,y]=meshgrid(-3:0.01:3,-3:0.01:3);z=sin(x.*y);mesh(x,y,z);>> contour3(x,y,z,50);第3章线性控制系统的数学模型【1】(1) >> s=tf('s');G=(s^2+5*s+6)/(((s+1)^2+1)*(s+2)*(s+4))Transfer function:s^2 + 5 s + 6--------------------------------s^4 + 8 s^3 + 22 s^2 + 28 s + 16(2) >> z=tf('z',0.1);H=5*(z-0.2)^2/(z*(z-0.4)*(z-1)*(z-0.9)+0.6)Transfer function:5 z^2 - 2 z + 0.2---------------------------------------z^4 - 2.3 z^3 + 1.66 z^2 - 0.36 z + 0.6Sampling time (seconds): 0.1【2】(1)该方程的数学模型>> num=[6 4 2 2];den=[1 10 32 32];G=tf(num,den)Transfer function:6 s^3 + 4 s^2 + 2 s + 2------------------------s^3 + 10 s^2 + 32 s + 32(2)该模型的零极点模型>> G=zpk(G)Zero/pole/gain:6 (s+0.7839) (s^2 - 0.1172s + 0.4252)-------------------------------------(s+4)^2 (s+2)(3)由微分方程模型可以直接写出系统的传递函数模型【5】(1) >> P=[0;0;-5;-6;-i;i];Z=[-1+i;-1-i];G=zpk(Z,P,8)Zero/pole/gain:8 (s^2 + 2s + 2)-------------------------s^2 (s+5) (s+6) (s^2 + 1)(2) P=[0;0;0;0;0;8.2];Z=[-3.2;-2.6];H=zpk(Z,P,1,'Ts',0.05,'Variable','q')Zero/pole/gain:(q+3.2) (q+2.6)---------------q^5 (q-8.2)Sampling time (seconds): 0.05【8】(1)闭环系统的传递函数模型>> s=tf('s');G=10/(s+1)^3;Gpid=0.48*(1+1/(1.814*s)+0.4353*s/(1+0.4353*s));G1=feedback(Gpid*G,1)Transfer function:7.58 s^2 + 10.8 s + 4.8--------------------------------------------------------------0.7896 s^5 + 4.183 s^4 + 7.811 s^3 + 13.81 s^2 + 12.61 s + 4.8 (2)状态方程的标准型实现>> G1=ss(G1)a =x1 x2 x3 x4 x5 x1 -5.297 -2.473 -2.186 -0.9981 -0.7598x2 4 0 0 0 0 x3 0 2 0 0 0 x4 0 0 2 0 0x5 0 0 0 0.5 0b =u1x1 2x2 0x3 0x4 0x5 0c =x1 x2 x3 x4 x5y1 0 0 0.6 0.4273 0.3799d =u1y1 0Continuous-time state-space model.(3)零极点模型>> G1=zpk(G1)Zero/pole/gain:9.6 (s^2 + 1.424s + 0.6332)--------------------------------------------------------(s+3.591) (s^2 + 1.398s + 0.6254) (s^2 + 0.309s + 2.707)【11】>> Ga=feedback(s/(s^2+2)*1/(s+1),(4*s+2)/(s+1)^2);Gb=feedback(1/s^2,50);G=3*feedback(Gb*Ga,(s^2+2)/(s^3+14))Transfer function:3 s^6 + 6 s^5 + 3 s^4 + 42 s^3 + 84 s^2 + 42 s---------------------------------------------------------------------------s^10 + 3 s^9 + 55 s^8 + 175 s^7 + 300 s^6 + 1323 s^5 + 2656 s^4 + 3715 s^3+ 7732 s^2 + 5602 s + 1400【13】c1=feedback(G5*G4,H3)=G5*G4/(1+G5*G4*H3)c2=feedback(G3,H4*G4)=G3/(1+G3*H4*G4)c3=feedback(c2*G2,H2)=c2*G2/(1+c2*G2*H2)=G3*G2/(1+G3*H4*G4+G3*G2*H1)G=feedback(G6*c1*c3*G1,H1)=G6*c1*c3*G1/(1+ G6*c1*c3*G1*H1)=G6*G5*G4*G3*G2*G1/(1+G3*H4*G4+G3*G2*H1+G5*G4*H3+G5*G4*H3*G3*H4*G4+G5*G4* H3*G3*G2*H1+G6*G5*G4*G3*G2*G1*H1)【14】>> s=tf('s');c1=feedback(0.21/(1+0.15*s),0.212*130/s);c2=feedback(c1*70/(1+0.0067*s)*(1+0.15*s)/(0.051*s),0.1/(1+0.01*s));G=(1/(1+0.01*s))*feedback(130/s*c2*1/(1+0.01*s)*(1+0.17*s)/(0.085*s),0.0044/(1+0.01*s)) Transfer function:0.004873 s^5 + 1.036 s^4 + 61.15 s^3 + 649.7 s^2 + 1911 s---------------------------------------------------------------------------4.357e-014 s^10 + 2.422e-011 s^9 +5.376e-009 s^8 +6.188e-007 s^7+ 4.008e-005 s^6 + 0.001496 s^5 + 0.03256 s^4 + 0.4191 s^3+ 2.859 s^2 + 8.408 s 第4章线性控制系统的计算机辅助分析【1】(1) >> num=[1];den=[3 2 1 2];G=tf(num,den);eig(G)ans =-1.00000.1667 + 0.7993i0.1667 - 0.7993i分析:由以上信息可知,系统的极点有2个是在s域的右半平面的,因此系统是不稳定的(2) >> num=[1];den=[6 3 2 1 1];G=tf(num,den);eig(G)ans =-0.4949 + 0.4356i-0.4949 - 0.4356i0.2449 + 0.5688i0.2449 - 0.5688i分析:由以上信息可知,系统的极点有2个是在s域的右半平面的,因此系统是不稳定的(3) >> num=[1];den=[1 1 -3 -1 2];G=tf(num,den);eig(G)ans =-2.0000-1.00001.00001.0000分析:由以上信息可知,系统的极点有2个是在s域的右半平面的,因此系统是不稳定的(4) >> num=[3 1];den=[300 600 50 3 1];G=tf(num,den);eig(G)ans =-1.9152-0.14140.0283 + 0.1073i0.0283 - 0.1073i分析:由以上信息可知,系统的极点有2个是在s域的右半平面的,因此系统是不稳定的(5) >> s=tf('s');G=0.2*(s+2)/(s*(s+0.5)*(s+0.8)*(s+3)+0.2*(s+2));eig(G)ans =-3.0121-1.0000-0.1440 + 0.3348i-0.1440 - 0.3348i分析:由以上信息可知,系统的所有极点都在s域的左半平面,因此系统是稳定的【2】(1) >> num=[-3 2];den=[1 -0.2 -0.25 0.05];H=tf(num,den,'Ts',0.5);abs(eig(H)')ans =0.5000 0.5000 0.2000分析:由以上信息可知,所有特征根的模均小于1,因此该系统是稳定的(2) >> num=[3 -0.39 -0.09];den=[1 -1.7 1.04 0.268 0.024];H=tf(num,den,'Ts',0.5);abs(eig(H)')ans =1.1939 1.1939 0.1298 0.1298分析:由以上信息可知,由于前两个特征根的模均大于1,因此该系统是不稳定的(3) >> num=[1 3 -0.13];den=[1 1.352 0.4481 0.0153 -0.01109 -0.001043];H=tf(num,den,'Ts',0.5);abs(eig(H)')ans =0.8743 0.1520 0.2723 0.2344 0.1230分析:由以上信息可知,所有特征根的模均小于1,因此该系统是稳定的(4) >> num=[2.12 11.76 15.91];den=[1 -7.368 -20.15 102.4 80.39 -340];H=tf(num,den,'Ts',0.5,'Variable','q');abs((eig(H))')ans =8.2349 3.2115 2.3415 2.3432 2.3432分析:由以上信息可知,所有特征根的模均大于1,因此该系统是不稳定的【3】(1) >> A=[-0.2,0.5,0,0,0;0,-0.5,1.6,0,0;0,0,-14.3,85.8,0;0,0,0,-33.3,100;0,0,0,0,-10];eig(A)ans =-0.2000-0.5000-14.3000-33.3000-10.0000分析:由以上信息可知,该连续线性系统的A矩阵的所有特征根的实部均为负数,因此该系统是稳定的(2)>>F=[17,24.54,1,8,15;23.54,5,7,14,16;4,6,13.75,20,22.5589;10.8689,1.2900,19.099,…-4-3.5-3-2.5-2-1.5-1-0.50x 10-6P ole-Zero Map Real Axis (seconds -1)I m a g i n a r y A x i s (s e c o n d s -1)21.896,3;11,18.0898,25,2.356,9];abs(eig(F)') ans =63.7207 23.5393 12.4366 13.3231 19.7275分析:由以上信息可知,该离散系统的F 矩阵的所有特征根的模均大于1,因此该系统是不稳定的 【4】>> A=[-3 1 2 1;0 -4 -2 -1;1 2 -1 1;-1 -1 1 -2]; B=[1 0;0 2;0 3;1 1];C=[1 2 2 -1;2 1 -1 2];D=[0 0;0 0];G=ss(A,B,C,D); tzero(G)pzmap(G)ans =-3.6124-1.2765结论:∴可以得到该系统的 零点为-3.6124、-1.2765 分析:由以上信息可知,【5】>> s=tf('s');Gc=sscanform(G,'ctrl') Go=sscanform(G,'obsv') a =x1 x2 x3 x4 x1 0 1 0 0 x2 0 0 1 0 x3 0 0 0 1 x4 -0.4 -1.4 -4.3 -4.3 b =u1 x1 0 x2 0 x3 0 x4 1 c =x1 x2 x3 x4 y1 0.4 0.2 0 0 d =u1 y1 0Continuous-time state-space model. a =x1 x2 x3 x4x1 0 0 0 -0.4x2 1 0 0 -1.4x3 0 1 0 -4.3x4 0 0 1 -4.3b =u1x1 0.4x2 0.2x3 0x4 0c =x1 x2 x3 x4y1 0 0 0 1d =u1y1 0Continuous-time state-space model.【9】(1)>> num=[18 514 5982 36380 122664 222088 185760 40320];den=[1 36 546 4536 22449 67284 118124 109584 40320];[R1,P1,K1]=residue(num,[den 0]);[R1,P1]ans =-1.2032 -8.0000-1.0472 -7.00000.2000 -6.00000.7361 -5.0000-2.8889 -4.00002.2250 -3.0000-2.0222 -2.00003.0004 -1.00001.0000 0>> [n,d]=rat(R1);sym([n./d]')ans =[ -379/315, -377/360, 1/5, 53/72, -26/9, 89/40, -91/45, 7561/2520, 1][阶跃响应的解析解]y(t)=(-379/315)*e-8t+(-377/360)*e-7t+(1/5)*e-6t+(53/72)*e-5t+(-26/9)*e-4t+(89/40)*e-3t+ (-90/45)*e-2t+(7561/2520)*e-t+1(2) >> num=[18 514 5982 36380 122664 222088 185760 40320];den=[1 36 546 4536 22449 67284 118124 109584 40320];[R2,P2,K2]=residue(num,den);[R2,P2]ans =9.6254 -8.00007.3306 -7.0000-1.2000 -6.0000-3.6806 -5.000011.5556 -4.0000-6.6750 -3.00004.0444 -2.0000-3.0004 -1.0000>> [n,d]=rat(R2);sym([n./d]')ans =[ 3032/315, 887/121, -6/5, -265/72, 104/9, -267/40, 182/45, -7561/2520][脉冲响应的解析解]y(t)=(3032/315)*e-8t+(887/121)*e-7t+(-6/5)*e-6t+(-265/72)*e-5t+(104/9)*e-4t+(-267/40)*e-3t+(182/45)*e-2t+(-7561/2520)*e-t(3) >> syms t;u=sin(3*t+5);Us=laplace(u)Us =(3*cos(5) + s*sin(5))/(s^2 + 9)>> s=tf('s');Us=(3*cos(5)+s*sin(5))/(s^2+9);num=[18 514 5982 36380 122664 222088 185760 40320];den=[1 36 546 4536 22449 67284 118124 109584 40320];G=tf(num,den); Y=Us*G;num=Y.num{1}; den=Y.den{1};[R3,P3,K3]=residue(num,den); [R3,P3]ans =1.1237 -8.00000.9559 -7.0000-0.1761 -6.0000-0.6111 -5.00002.1663 -4.0000-1.1973 - 0.0010i 0.0000 + 3.0000i-1.1973 + 0.0010i 0.0000 - 3.0000i-1.3824 -3.00000.8614 -2.0000-0.5430 -1.0000>> [n,d]=rat(R3);sym([n./d]')ans =[109/97, 282/295, -59/335, -965/1579, 951/439, - 449/375 + (18*i)/17981, - 449/375 - (18*i)/17981, -1663/1203, 317/368, -82/151]Linear Simulation Results Time (seconds)A m p l i t u d e [正弦信号时域响应的解析解]y(t)=(109/97)*e -8t +(282/295)*e -7t +(-59/335)*e -6t +(-965/1579)*e -5t +(-449/375)*e -4t +(-1663/1203)*e -3t +(317/368)*e -2t +(-82/151)*e -t -2.3947sin(3t)[输出波形]>> num=[18 514 5982 36380 122664 222088 185760 40320];den=[1 36 546 4536 22449 67284 118124 109584 40320]; G=tf(num,den); t=[1:.1:20]';u=sin(3*t+5); lsim(G,u,t);分析:由解析解可知,输出信号的稳态部分是振荡的,并且其幅值与相位始终 在到达稳态的时候保持不变,因此 右图所示的输出波形与解析解所得的结论是一致的【10】(1)因为PI 或PID 控制器均含有Ki/s 节,则当Kp →∞,即|e(t)|一环节后,如果要求|e(t)|→0(2)不稳定系统能用PI 或PID 在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

第2章 MATLAB语言程序设计基础 基于MATLABSimulink的系统仿真技术与应用(第2版

第2章 MATLAB语言程序设计基础  基于MATLABSimulink的系统仿真技术与应用(第2版
➢ MathWorks公司于2010年9月推出 ➢ 现在每年三月和九月各发布一个新版本,分别
命名为a和b版
MATLAB语言环境操作界面
➢ 命令窗口、当前目录窗口、命令历史记录窗口、 工作空间窗口;可以只使用命令窗口
MATLAB的联机帮助与电子版手册
➢ Help | MATLAB Help ➢ 全套PDF文件
➢ 函数调用语句
语句结构 一般对应于*.m函数 同一函数可以有不同的调用格式
Saturday, 2010-10- 9, 07:07:26
Slide <#> (of 42)2章:MATLAB语言程序设计基础 薛定宇、陈阳泉《基于MATLAB/Simulink的系统仿真技术与应用》清华大学出版社,2010
冒号表达式
举例 复数矩阵的输入
MATLAB语句
矩阵变换成符号型
Saturday, 2010-10- 9, 07:07:26
Slide <#> (of 42)2章:MATLAB语言程序设计基础 薛定宇、陈阳泉《基于MATLAB/Simulink的系统仿真技术与应用》清华大学出版社,2010
1.2.3 多维数组的定义
2.3.4 矩阵元素的数据变换
1.2.3 矩阵的MATLAB表示
复数矩阵为MATLAB的基本变量单元 矩阵输入
MATLAB输入语句
扩展矩阵
无需预先定义维数
Saturday, 2010-10- 9, 07:07:26
Slide <#> (of 42)2章:MATLAB语言程序设计基础 薛定宇、陈阳泉《基于MATLAB/Simulink的系统仿真技术与应用》清华大学出版社,2010
Saturday, 2010-10- 9, 07:07:26

高等应用数学问题的MB求解习题参考解答

高等应用数学问题的MB求解习题参考解答
if n>=3 y=fib(n-1)+fib(n-2);
else, y=1; end else
error(’n must be positive integer.’) end 例如,n = 10 可以求出相应的项为
>> fib(10) 现在需要比较一下递归实现的速度和循环实现的速度 >> tic, fib(20), toc
>> t=[0,120,240,0]*pi/180; % 变换成弧度 xxx=[]; yyy=[]; for i=0:5:360 tt=i*pi/180; xxx=[xxx; cos(tt+t)]; yyy=[yyy; sin(tt+t)]; end
plot(xxx’,yyy’,’r’), axis(’square’)
使用间接方法,以加大传递误差。
11 下面给出了一个迭代模型
xk+1 = 1 + yk − 1.4x2k yk+1 = 0.3xk
写出求解该模型的 M-函数,如果取迭代初值为 x0 = 0,y0 = 0,那么请进行 30000 次迭代求出 一组 x 和 y 向量,然后在所有的 xk 和 yk 坐标处点亮一个点 (注意不要连线),最后绘制出所 需的图形。提示 这样绘制出的图形又称为 Henon 引力线图,它将迭代出来的随机点吸引到一 起,最后得出貌似连贯的引力线图。
③利用递归调用的方式编写此函数。
【求解】 假设 fib(n) 可以求出 Fibonacci 数列的第 n 项,所以对 n 3 则可以用 k=fib(n − 1)+fib(n − 2) 可以求出数列的 n + 1 项,这可以使用递归调用的功能,而递归调用的出口为 1。综上,可以编写出 M-函数。

第二章 matlab基础知识

第二章 matlab基础知识
第四种方法:利用函数logspace logspace是用来创建对数空间的向量

logspace 的基本语法
X=logspace(X1,X2,n) 该函数创建的向量第一个元素值为10X1,而最后一个元素的数值为10X2,

n为向量的元素个数,元素彼此之间的间隔按照对数空间的间隔设置 若在表达式中忽略参数n,则系统默认地将向量设置为50个元素
2.4 Matlab数据
2016/12/29 数据类型 矩阵的概念 一维数组变量的创建 二维数组变量的创建 数组元素的标识与寻访 字符串 多维矩阵 元胞 Application of Matlab Language 结构
8
2.4.1. MATLAB数据类型
数据的记述 Matlab的数只采用习惯的十进制表示,可 以带小数点和负号;其缺省的数据类型为双 精度浮点型(double)。 例如:3 -10 0.001 1.3e10 1.256e-6 其他数据类型 此外,MATLAB还提供了各种有符号、无 符号整型数据,具体参见教材表2.2。
语言。可见学习掌握这一工具的重要性。
2016/12/29
Application of Matlab Language
3
2.2 MATLAB的主要功能
功能强大
数值运算优势 符号运算优势(Maple) 强大的2D、3D数据可视化功能 许多具有算法自适应能力的功能函数
2016/12/29
10
2.4.2. 数组(array)的概念
数组的分类
一维数组,也称为向量(vector) 。
行向量(row vector)、列向量(column vector)。
二维数组(矩阵matrix)。 多维数组。 有效矩阵:每行元素的个数必须相同,每 列元素的个数也必须相同。

02第二章Matlab语言基础-Matlab教程

02第二章Matlab语言基础-Matlab教程

MATLA于分隔某一行的元素,分号用于区分不同的行. 除了分号,在输入矩 阵时,按Enter键也表示开始一新行. 输入矩阵时,严格要求所有行有相同的列 例m=[1 2 3 4 ;5 6 7 8;9 10 11 12] p=[1 1 1 1 2222 3 3 3 3] 特殊矩阵的建立: a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零. b=zeros(m,n) 产生一个m行、n列的零矩阵 c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵 d=eye(m,n) 产生一个m行、n列的元素的单位矩阵 e=randn(m,n) 产生一个m行、n列正态分布随机矩阵
3、数组的方向 前面例子中的数组都是一行数列,是行方向分布的 称之为行向量 数组也可以是列向 行向量. 前面例子中的数组都是一行数列,是行方向分布的. 称之为行向量 数组也可以是列向 量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示. 它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示 产生列向量有两种方法: 产生列向量有两种方法: 直接产生 例 转置产生 例 c=[1;2;3;4] ; ; ; b=[1 2 3 4]; c=b’
Matlab语言基础 Matlab语言基础
1)启动与退出
双击matlab图标,进入matlab命令窗口(command window) 双击matlab图标,进入matlab命令窗口(command window),即可 输入命令语句,开始运算,或从开始菜单的程序中单击matlab进入。 输入命令语句,开始运算,或从开始菜单的程序中单击matlab进入。 单击file菜单中的Exit,或在命令窗口输入Exit并回车即可退出。 单击file菜单中的Exit,或在命令窗口输入Exit并回车即可退出。

第02讲 MATLAB语言基础

第02讲  MATLAB语言基础

第二讲M A T L A B语言目录一、M A T L A B语言基础 (3)§2.1.1、M A T L A B的数据 (3)1、数值表示方式 (3)2、数值显示格式 (3)3、永久变量 (4)§2.1.2、M A T L A B的运算符 (4)1、算术运算符 (4)2、关系运算符 (5)3、逻辑运算符 (5)§2.1.3、M A T L A B的函数 (5)1、基本函数 (5)2、自定义函数 (6)§2.1.4、M A T L A B的矩阵产生 (6)1、矩阵的几种样式 (6)2、直接用数据产生矩阵 (6)3、利用增量产生矩阵 (7)4、利用函数产生矩阵 (7)5、利用矩阵产生矩阵 (7)§2.1.5、M A T L A B的矩阵操作 (8)1、寻访矩阵中的数据 (8)2、修改数据 (8)3、插入、重排、提取、拉长、置空 (8)4、矩阵的规模 (8)二M A T L A B语言应用 (9)§2.2.1、矩阵运算 (9)(1)概述 (9)(2)矩阵的加减法 (9)(3)矢量积与转置 (10)(4)复数的共轭与转置 (11)(5)矩阵的乘法 (11)(6)矩阵的除法 (13)(7)矩阵的乘幂 (14)(8)解线性方程 (15)§2.2.2、多项式运算 (16)04-1(1)多项式的表示 (16)(2)多项式的值 (16)(3)多项式的根 (17)(4)多项式的系数 (17)(5)多项式的积: (18)(6)多项式的商: (18)(7)多项式的导数 (18)(8)多项式的曲线拟合 (19)§2.2.3、字符运算 (19)(1)字符数组 (19)(2)字符与数值的转换 (20)(3)字符串比较 (20)§2.2.4、符号运算 (21)(1)符号定义 (21)(2)因式分解 (21)(3)简化 (22)(4)反函数 (22)(5)求和 (23)(6)d i f f(f,v,n)-求导 (23)(7)i n t(f,v,a,b)-积分 (24)§2.2.5、N O T E B O O K操作 (24)04-2【正文】基本语句:[变量1,变量2,...]=表达式(参数1,参数2,...)常量3e8、[1,2;3,4]数据变量A=[1,2,3;4,5,6]永久变量p i、i算术运算符+、-、*、/表达式运算符关系运算符>、<、=逻辑运算符&、|、~内部函数s i n、c o s函数工具箱扩展函数i m r e a d自定义函数m y f一、M A T L A B语言基础§2.1.1、M A T L A B的数据1、数值表示方式M A T L A B环境下的数值(矩阵的元素)一般采用十进制,可以带小数点和正负号,以下数值都是合法的:5、+10、-20.56、0.0045、-1000.、1.3e-4、100e20、-0.023e-0122、数值显示格式M A T L A B内部数据运算都按双精度数据格式进行运算,不必指定数据格式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.4.1 矩阵创建
函数
2.4 矩阵及其运算
语法 说明 生成n阶hadamard矩阵,其中n满足 rem(n,4)=0。 生成第一行和第一列都为c,或第一列 为c和最后一行为r的hankel矩阵
与创建二维数组一样,矩阵创建的主要方法有:直接输入法、函数法、变换 法。
hadamard
hankel
hadamard(n)
2.3.5 数组的逻辑运算
逻辑 运算 相应的 逻辑运 算函数 逻辑运算符 说明
&
与 and && | 或 or || ~
能实现所有的逻 辑与运算
只能用于标量 之间 能实现所有的逻 辑或运算 只能用于标 量之间 实现所有的非运算
数组对应元素或两标量同为非零时 返回1;否则返回0
数组对应元素或两标量同为零时返 回0;否则返回1 数组元素或标量为非零时返回0,否 则返回1
2.3.4 数组的关系运算
是按元素来比较相同规格数组(行、列数相同)或比较数组 与标量。
运算符 < 函数 lt 说明 小于 运算符 >= 函数 ge 说明 大于或等于
<=
>
le
gt
小于或等于
大于
==
~=
eq
ne
等于
不等于
例: 数组的关系运算 >>A=[1 3;2 0];B=[4 2;2 -1];C=(A>B),D=le(A,B),E=(A~=B) C= 0 1 0 1 D= 1 0 1 0 E= 1 1 0 1
第2章 MATLAB语言基础
• • • • • • 2.1变量及其赋值 2.2 向量及其运算 2.3 数组及其运算 2.4 矩阵及其运算 2.5 函数与表达式 2.6 MATLAB数据类型
2.1变量及其赋值
2.1.1 变量命名规则
• 变量名只能由字母、数字和下划线组成,且必须以 字母开头; • 变量名区分字母的大小写; • 变量名不能超过最大长度限制; • 关键字不能作为变量名,如for、end和if等; 注意:存变量命名时应尽量避开MATLAB中预定义的 变量。
Realmin或realmin
pi
最小正实数
圆周率
2.1变量及其赋值
2.1.2 变量赋值
• 赋值语句的一般形式为:变量=数据(或表达式); 例: >>a=1,b=2,c=a^2+3*b+1 %命令间用逗号间隔,回车后命令窗口显示为: a=1 b=2 c=8 >>a=1;b=2; c=a^2+3*b+1 %前两条语句加上分号,回车后命令窗口显示为: c=8 %加了分号的语句的运行结果不再显示在命令窗口中 >>a %但可以通过直接输入变量名查看变量的取值 a=1 >>a=4 a=4 %当变量再次被赋值时,新值代替旧值 注意:标点符号必须在英文状态下输入 。
• 向量的混合积
– 运算格式为dot(A,cross(B,C)):是指先叉乘后再点乘,:
例: 向量的运算 >>a=[1 2 3];b=4:6;c=linspace(7,10,4);d=[1 4 6]; >>d=a+b, e=a-c d= 5 7 9 ??? Error using ==> minus Matrix dimensions must agree. % 表明e=a-c运算中a与c的维数不同,使运算出错 >>f=a+1,g=b-1 f= 2 3 4 g= 3 4 5 >> h=3*a, k=4*b' h= 3 6 9 k= 16 20 24 >>dot(a,b) ;相当于a*b' ans = 32 >> cross(a,b) ans = -3 6 -3 >> dot(a,cross(b,d)) ans = 0
表2-1 MATLAB预定义变量
预定义变量 ans eps flops Inf或inf i或j NaN或nan nargin nargout Realmax或 realmax 变量的含义 运算结果的缺省变量名 计算机中的最小数。当某量的绝对值小于eps时,可认为此 量为零 浮点运算数 正无穷大,由零做除数所引入的常量,如1/0 虚数单位i=j=(-1)1/2 表示非数值,如0/0,inf/inf,0*inf,inf-inf等 函数的输入变量数目 函数的输出变量数目 最大正实数

not
异或
xor
没有相应的运算符
数组对应元素或两标量只有一个非 零时返回1,否gt;A=[1 0 0;2 3 4];B=[0 1 3;0 1 2];C=A&B,D=or(A,B),E=~(A) C= 0 0 0 0 1 1 D= 1 1 1 1 1 1 E= 0 1 1 0 0 0

组合法 :
一个向量和数值或另一向量(同为行或列向量)组合在一起, 构成一个新的向量 。 例2-4 >>a=[1 2 3 4];b=[10 11];c=[a 13 b zeros(1,2)] c= 1 2 3 4 13 10 11 0 0
• 利用linspace()函数或logspace( )函数生成向量法:

函数法
函数 eye 语法 eye(n); eye(m,n); 说明 生成单位数组
ones
rand randn
ones(n); ones(m,n);
rand(n); rand(m,n); randn(n); randn(m,n);
生成元素全为1的数组
生成均匀分布的随机数组 生成正态分布的随机数组
zeros
例: 直接输入法创建数组
>> A=[1 2 3 4;5 6 7 8],B=[1 2+i 3i 4],C=[9:12;1:2:5 21],D=A+i*C A= 1 2 3 4 5 6 7 8 B= 1.0000 2.0000 + 1.0000i 0 + 3.0000i 4.0000 C= 9 10 11 12 1 3 5 21 D= 1.0000 + 9.0000i 2.0000 +10.0000i 3.0000 +11.0000i 4.0000 +12.0000i 5.0000 + 1.0000i 6.0000 + 3.0000i 7.0000 + 5.0000i 8.0000 +21.0000i
2.3.2 数组的寻址 数组的寻址----找出需要被操作的元素。对数组 A寻址的指令如下:
• • • • A(r,c):表示数组A的第r行第c列的元素。 A(r,:):表示数组A的第r行元素。 A(:,c):表示数组A的第c列的元素。 A(s):把数组A的所有列按先左后右的次序,首尾连 接成一个序列后,由上到下的第s个元素。 (MATLAB是按照列的先后顺序存放的。)
2.3.3 数组的代数运算
主要包括加(+)、减(-)、乘(.*)、除(./和.\)、幂运算(.^)、指数运算(exp)、对数运
算(log)和开方运算(sqrt)等。
例:数组的代数运算 >>A=[1 2 3;4 5 6];B=[1 3 4;2 5 6]; >>E=A.*B,F=A./B,H=A.^2,I=exp(A), K=sqrt(A) E= 1 6 12 8 25 36 F= 1.0000 0.6667 0.7500 2.0000 1.0000 1.0000 H= 1 4 9 16 25 36 I= 2.7183 7.3891 20.0855 54.5982 148.4132 403.4288 K= 1.0000 1.4142 1.7321 2.0000 2.2361 2.4495
2.2.2向量的运算 • 同维向量的加减 • 数与向量的加减 • 数乘向量 • 向量的点积
– 点积运算函数dot(A,B) :维数相同的向量A和B各对应位 置上元素相乘后的和,其结果是一个标量。
• 向量的叉积
– 叉积运算函数cross(A,B)。结果是一个过两向量交点且垂 直于两个向量所在平面的向量。 – 即若向量A=(a1,a2,a3),向量B=(b1,b2,b3), (A×B)=(a2b3-b2a3,a3b1-a1b3,a1b2-a2b1)。叉积运算 要求A和B必须是三元素的向量。
– linspace(a,b,n):产生首尾元素分别为a和b,长度为n的等 差行向量。当n省略时,默认n=100。 – logspace(a,b,n):产生首尾元素分别为10a和10b,长度为 n的对数等分行向量。当n省略时,默认n=50;当b=pi时, 在[10a pi]区间产生长度为n的对数等分行向量。
pascal
toeplitz
生成满足指定要求的n阶pascal矩阵
生成第一行和第一列都是r,或第一列 为c和第一行为r的toeplitz矩阵
wilkinson
wilkinson(n)
生成n阶J. H. Wilkinson's特征值测试 矩阵
4.2 矩阵的运算 • 矩阵的加、减:相同行数和列数的两矩阵对应元素间进

冒号表达式法 :
– 一般格式为:向量名=a1:step:a2。其中a1为向量的第一 个元素,a2为最后一个元素,step为变化步长,省略时, 默认为1。
例2-3 >>a=[1:2:10],b=[1:5] a= 1 3 5 7 9 %注意:也就是说用冒号表达式法生成向量时,最 后一个元素不一定是a2 b= 1 2 3 4 5
生成全零数组
按指定维方向串接数组 求对角线元素或对角矩阵 以数组水平中线为对称轴,交换上下对 称位置上的数组元素 以数组垂直中线为对称轴,交换左右对 称位置上的数组元素 按指定维上的数目复制数组 按指定的行和列重新排列数组 逆时针旋转数组90度的整数倍 提取数组下三角部分,生成下三角矩阵 提取数组上三角部分,生成上三角矩阵
相关文档
最新文档