第2讲 MATLAB变量和数据操作
matlab2_matlab教程
x1+2x2+3x3=1 2x1+3x2+4x3=2 a=[1 2 3;2 3 4];b=[1;2]; x=a\b x= 1.00 0 x=
x1 1 2 3 1 x2 = 2 3 4 2 x3
a
x = b
x=pinv(a)b
0.83 0.33
0
-0.17
六、微分方程求解
微分方程求解的仿真算法有多种,常用 的有Euler(欧拉法)、Runge Kutta(龙 格-库塔法。 Euler法称一步法,用于一阶微分方程
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10]; a.*b ans = 2 8 18 4 15 30 49 72 90
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
a*b ans = 25 55 85
37 85 133
二、数据的保存与获取
把matlab工作空间中一些有用的数 据长久保存下来的方法是生成mat数 据文件。 save —— 将工作空间中所有的变 量存到matlab.mat文件中。 默认文件名
save data——将工作空间中所
有的变量存到data.mat文件中。
save data a b ——将工作空间 中a和b变量存到data.mat文件中。
rand —— 随机矩阵
eye —— 单位矩阵
zeros ——全部元素都为0的矩阵
ones ——全部元素都为1的矩阵
还有伴随矩阵、稀疏矩阵、魔方 矩阵、对角矩阵、范德蒙等矩阵的创 建,就不一一介绍了。
注意:matlab严格区分大小写字母,因
此a与A是两个不同的变量。 matlab函数名必须小写。
第二讲道客巴巴MATLAB的数值计算
例 在区间[20,50]内均匀分布的5阶随机 矩阵。
命令如下:
x=20+(50-20)*rand(5) 此外,常用的函数还有reshape(A,m,n), 它在矩阵总元素保持不变的前提下,将 矩阵A重新排成m×n的二维矩阵。
也可用linspace函数产生行向量。其调用 格式为: linspace(a, b, n) 其中a和b是生成向量的第一个和最后一 个元素,n是元素总数。 例 》a=linspace(1 , 10 , 10)
当一个指令或矩阵太长时,可用••• 续行
冒号的作用 用于生成等间隔的向量,默认 间隔为1。 用于选出矩阵指定行、列及元 素。 循环语句
2.用matlab函数创建矩阵
空阵 [ ] — matlab允许输入空阵,当一 项操作无结果时,返回空阵。 rand —— 随机矩阵 eye —— 单位矩阵 zeros ——全部元素都为0的矩阵 ones ——全部元素都为1的矩阵 diag ——产生对角矩阵
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 42
66 81 96 102 126 150
※当一个方阵有复数特征值或负实 特征值时,非整数幂是复数阵。
a^0.5
ans =
0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i
3.conv多项式乘运算(向量卷积)
例:a(x)=x2+2x+3; b(x)=4x2+5x+6; c = (x2+2x+3)(4x2+5x+6) a=[1 2 3];b=[4 5 6]; c=conv(a,b)或c=conv([1 2 3],[4 5 6]) c = 4.00 13.00 28.00 27.00 18.00 p=poly2str(c,‘x’) 其中x表示自变量 p = 4 x^4 + 13 x^3 + 28 x^2 + 27 x + 18
数值分析第二讲MATLAB简介
MATLAB编程入门 MATLAB的编程风格与C语言相同。 常用流程控制语句 if if语句条件 elseif if语句条件 end 终止作用域 for 指定次数的循环 while 不指定次数的循环 break 终止循环 switch 开关语句 case 列出语句 otherwise否则语句 return 返回调用函数 function 函数定义语句
MATLAB常用函数名 数学函数(中文意义略) abs,acos,acosh,angle,asin,asinh,atan,atan2,atanh, ceil,conj,cos,cosh,exp,fix,floor,gcd,imag,lcm,log, log10,real,rem,round,sign,sin,sinh,sqrt,tan,tanh, 构造矩阵函数 eye(n),ones(n),zeros(n):产生n阶单位、全1,全0矩阵 eye(m,n),ones(m.n),zeros(m.n):产生m×n的单位、全1,全 0矩阵 Sparse:构造稀疏矩阵 Size(M)取矩阵M的各维大小(结果为向量) size (M,n) 取矩阵M的第n维大小
例1:构造两个可加减乘的矩阵A,B,C,求A+B,A*C, sin(A)+cos(B),以及取A,B,C的子矩阵作同样的运算。 解:A=[ 1,2,3,4;5 6 7 8; 9 10 11 12]; B=ones(3,4) C= pascal(3) ⑴ D=A+B ⑵ E=sin(A)+cos(B) (3) F=A*C 错误操作:A*B,A+C
MATLAB的基本用法 一、数与变量 MATLAB的内部本质上只有两种类型的数据:实数和字符。 一个实数占8个字节(64比特),一个字符占用1字节(8比特)。 复数由两个实数构成,矩阵元素由字符、实数、复数构成。由矩 阵再构成“struct”(结构)数据类型,字符串是以字符为变量的 行向量。所以表现形式有:字符、字符串、整数、实数、复数、 结构。 characters: ‘char’ 表有符号字符 8bits, ‘uchar’ 无符号字符 8bits. integers :‘short’ 短整数16 bits, ‘long’ 长整数 32 bits, floating-point: ‘single-‘ 表单精度浮点数32bits, ’double‘表双精度浮 点数:64bits
第2讲MATLAB变量和数据操作
第2讲MATLAB变量和数据操作在MATLAB中,变量是用于存储和处理数据的命名对象。
在使用MATLAB进行数据操作时,首先需要定义和分配变量,并对其进行操作。
1.变量的定义和分配:在MATLAB中,可以使用赋值语句将数据分配给变量。
例如,可以使用以下语句将3赋给变量x:x=3这意味着将3分配给变量x,以便以后可以使用x来引用这个值。
2.向量和矩阵:在MATLAB中,可以使用向量和矩阵来存储和操作多个数据项。
向量是一维数组,而矩阵是二维数组。
可以通过以下方式创建向量和矩阵:-向量:可以使用方括号[]将多个元素放在一起,以逗号分隔。
例如,可以使用以下语句创建一个向量:v=[1,2,3,4]v=1234-矩阵:可以使用分号;将多个行放在一起,以逗号分隔。
例如,可以使用以下语句创建一个2行3列的矩阵:A=[1,2,3;4,5,6]A=1234563.数据类型:在MATLAB中,变量可以具有不同的数据类型,包括数值类型(如整数、浮点数)、字符类型和布尔类型。
可以使用以下方式指定变量的数据类型:-数值类型:可以使用整数和浮点数来表示数值。
例如,可以使用以下语句创建一个整数变量:n = int8(3)n=-字符类型:可以使用单引号''将字符放在一起。
例如,可以使用以下语句创建一个字符变量:c='a'c='a'-布尔类型:可以使用逻辑运算符(如>、<、==等)来比较变量的值,并将结果分配给逻辑变量。
例如,可以使用以下语句创建一个逻辑变量:logic = (3 > 2)logic =4.数据操作:在MATLAB中,可以对变量进行多种数据操作,包括数值计算、字符串处理和逻辑操作等。
以下是几个常见的数据操作示例:-数值计算:可以使用数值运算符(如+、-、*、/等)对数值进行计算。
例如,可以使用以下语句将两个变量相加:result = x + nresult =6-字符串处理:可以使用字符串函数对字符变量进行处理。
第二讲 MATLAB基本运算
矩阵下标的用途
访问超出矩阵范围时,产生 Index exceeds matrix dimentions 存储超出矩阵范围时,矩阵自动调节 大小,将指定位置元素置入,其他没 指定数的位置默认为零。
2010-12-25
21
矩阵下标的用途
(2)矩阵连接 例:a=[1 2;3 4] b=[a a+5; a-5 zeros(size(a)] 将小矩阵嵌套入大矩阵,实现矩阵连接。
将矩阵按创建原则写入一个M文件, 在MATLAB的命令窗口或程序中直接执 行该M文件,即将矩阵调入工组空间。
2010-12-25
15
利用MATLAB函数创建矩阵 利用MATLAB函数创建矩阵 MATLAB
ones( m, n) - m行n列的1阵产生 zeros(m, n) -产生m行n列的全0阵 rand(m, n) -产生m行n列均匀分布全列的在 [0,1]区间的随机阵 randn(m, n) -产生m行n列的正态分布矩阵 eye(n) -产生n维单位阵
2010-12-25 18
2.2.3 矩阵的下标 .2.3
子矩阵提取A(v1, v2)
v1表示子矩阵包含的行标构成的向量 v2表示子矩阵包含的列标构成的向量 B1=A(:, [1, 3]) 为:时表示要提取所有行(列) B2=A(1:2:end, :) end表示最后一行(列) B3=A([3,2,1],[2,3,4]) 例: B4=A(:, end:-1:1) 提取A矩阵所有行、1,3列 提取A矩阵 3,2,1 行、2,3,4 列构成子矩阵 提取A矩阵全部奇数行,所有列 将A矩阵左右翻转
2010-12-25
13
直接输入法创建矩阵
例:创建矩阵
学习matlab(Matlab基础知识)
第二讲Matlab基础知识1.标识符把标志变量、常量或文件名的特定字符称为标识符,Matlab规定必须是英文字母、阿拉伯数字和下划线等符号组成的字符串,第一个符号必须是英文字母。
2.Matlab中的数据及变量类型有三种类型的基本数据:(1)数值型数据,简称数值(Double Array):一般输入的数字均为数值数据,包含实数、复数。
(2)字符串型数据,简称字符量(Char Array):用英文格式单引号加以界定的数字、字符、各种符号、表达式、方程式和汉字等。
(3)符号型数据,简称符号量(Sym Object):用sym和syms可以把字符、表达式、方程、矩阵等定义成数学符号,称为符号型数据,运算结果为数学表达式。
在命令窗口中键入class(a),回车可知已有变量a是哪一种类型的数据。
3.变量名及赋值(略)2.1 数值矩阵2.1.1 永久性数值变量名除了i、j、pi、eps(浮点运算相对精度10-52)、Inf、NaN外还有,realmin(最小正浮点数2-1022)、realmax(最大正浮点数21023)。
2.1.2 数值矩阵的创建1.直接输入法>>a=[1 6 1;4 6 2;9 3 8];>> b=[2-3i,3+5i,2i;3,9i,6;5-i,7i,4];3.变换矩阵结构的命令flipud(a)——输出矩阵a上下翻转后的矩阵;fliplr(a)——输出矩阵a左右翻转后的矩阵;rot90(a,k)——输出矩阵a沿逆时针旋转k个90度后的矩阵,k为正负整数;rot90(a)——输出矩阵a逆时针旋转90度后的矩阵;reshape(A,m,n)——输出一个m×n=k阶矩阵,它是由矩阵a的k个元素重新排列构成的矩阵,重排前后元素在矩阵中的符号不变。
4.一批特殊向量(行矩阵)的创建(1)等差数列型向量的创建增量输入法:t=a:h:b或t=[a:h:b],>> t=(a:h:b),a、b为起始值,h为公差,可正,可负,省略时为1.例如>> t=0:0.1:2*pi线性等分命令t=linspace(a,b,n),a、b为起始值,n为(b-a)的等分点个数。
MATLAB语言课件 第2讲 MATLAB语言的数值运算共47页
主要用途:使命令输入更简单化(没有输入参数也没有输 出参数)
当用户需要重复输入许多相同的命令时,可将它们放在一 个命令文件中,每次只要输入文件名,即可得相同的运行结果。
实质是将用户在 MATLAB 命令窗口中输入的一串命 令用另外一个名称来代替。 ( 2 )函数文件
程序的基本组成 %说明部分 清除命令(可选) 定义变量(局部变量和全局变量) 按照顺序行执行的命令语句 控制语句开始 控制语句体 控制语句结束 其他命令(如绘图等)
2.1 基本语法结构
2.1.1 变量与赋值语句
1、变量 变量命名规则
(1)必须以字母开头; (2)可以由字母、数字和下划线混合组成; (3)变量长度应不大于31个; (4)字母区分大小写。
2.1.5 程序控制语句 为编写结构化的程序提供了必不可少的条件,可提
高程序的效率和可读性 1、 for循环语句:用来执行循环次数已知的情况 调用格式:
for x=初值:步长:终值 循环体
end
其中:变量 x 称为循环变量,初值、终值和步长可以是标 量,也可以是表达式。当循环语句开始执行时, x 的值被 赋为和初值相同的内容,每执行一次循环体的内容, x 的 值就会按照步长的大小来改变,如果步长为正数,每执行 一次就增加一个步长,否则减小一个步长,一直到变量的 值大于或者小于终值,for语句循环结束,继续执行结束语 句下面的命令。
2.1.3 运算符 Matlab的运算符可分为三类:算术运算符、关系
运算符和逻辑运算符。其中算术运算符的优先级最 高,其次是关系运算符,最后是逻辑运算符。下面 将分别介绍这三类运算符和逻辑函数。
1. 算术运算符 按照运算符的优先级可把算术运算符分为五级。 2. 关系运算符 关系运算符对于程序的流程控制非常有用,在 MATLAB的循环和条件控制中经常使用。
数学模型与数学实验课件第02讲 MATLAB入门
%显示目录上的文件 %清除内存中的全部变量 %把name.mat文件中的a变量装入
内存 %检查内存中有什么变量
➢ 其他帮助命令 ——who、whos
联机演示系统
进入演示界面的方法: ➢ 选中MATLAB主窗口中的Help下拉菜单
的Demos选项 ➢ 在命令窗口中执行demo
MATLAB的常用命令
➢ who或whos:显示当前内存变量 ➢ clear:清除指定或所有内存变量 ➢ clc:清除工作窗口 ➢ clf:清除图形窗口
➢ 直接交互的指令行操作方式
➢ M文件的编程工作方式
——脚本文件 ——函数文件
直接交互的指令行操作方式
➢ 在Command Window中看到“<<”提示符 后就可以输入任何想要的函数或变量运 算
➢ 若没有“<<”提示符,则表示MATLAB正 在执行任务,可等待也可终止
➢ 任何时候可以使用“Ctrl+Break”或 “Ctrl+C”终止正在执行的任务
第02讲 MATLAB入门
MATLAB 简介
MATLAB是MATrix LABoratory的缩写, 是由美国MathWorks公司开发的工程计 算软件,1984年MathWorks公司正式将 MATLAB推向市场,迄今MATLAB已推出多 个版本.在国际学术界,MATLAB已经被确 认为准确可靠的科学计算标准软件.在 设计研究单位和工业部门,MATLAB被认 作进行高效研究和开发的首选软件工具.
几点说明:
➢ 所有的命令必须在英文状态下输入 ➢ MATLAB中严格区分大小写 ➢ 不同的语法关键词显示颜色不同 ➢ 可以作编辑菜单中的复制、粘贴、撤销
Matlab(R2009a版)-第2讲 数值运算
MATLAB2009从入门到精通课程主要内容•第1章MATLAB简介•第2章数值运算•第3章单元数组和结构•第4章字符串•第5章符号运算•第6章MATLAB绘图基础•第7章程序设计•第8章计算方法的MATLAB实现•第9章优化设计•第10章SIMULINK仿真初探第2章数值运算•本章将介绍MATLAB2009的数值计算功能,首先讲述MATLAB中的运算符,然后讲述包括MATLAB的向量、矩阵和数组,并介绍他们之间的运算。
此外,还介绍了一些特殊的矩阵数据结构。
另外,还对MATLAB中的多项式的运算以及多项式拟合作了详细介绍。
2.1 MATLAB中的变量•MATLAB中的变量必须以字母打头,之后可以是任意字母、数字或下划线,变量名区分字母大小写,变量名不超过19个字符,默认变量名为ans。
除此之外还包含一些特殊的变量。
•who命令能够显示变量的信息;•whos命令能够显示变量的详细信息。
•matlab中同样支持复数变量,表示方法为a=m+ni(j)。
当n是表达式时,n与i(j)之间必须要加乘号。
另外也可以用complex(x,y)来产生复数。
•在循环程序段中一般不把i和j作为变量名称,以免生成数据时发生误解。
•>> a=1+2i• a =• 1.0000 + 2.0000i •>> b=1+3*i• b =• 1.0000 + 3.0000i•>> a=sin(2)+cos(2)*i• a =•0.9093 -0.4161i•>> b=sin(2)+cos(3)i•??? b=sin(2)+cos(3)i•|•Error: Unexpected MATLAB expression.•>> x=sin(2);•>> y=cos(3);•>> a=complex(x,y)• a =•0.9093 -0.9900i•>> b=complex(x)• b =•0.9093•>> a=i+2i• a =•0 + 3.0000i •>> b=i+2*i • b =•0 + 3.0000i•>> i=5;•>> a=i+2i• a =• 5.0000 + 2.0000i •>> b=i+2*i• b =•15•>> i=5;•>> a=5+i • a =•10•>> b=5+1*i • b =•10•>> i=5;•>> a=5+2i• a =• 5.0000 + 2.0000i •>> a=5+2*i• a =•152.2 MATLAB的数值运算基础2.3 数组及向量运算•由数学知识可知,数组和矩阵有着不同的概念。
matlabMATLAB的数值计算
4. 矩阵的其它运算
inv —— 矩阵求逆 det —— 行列式的值 eig —— 矩阵的特征值 diag —— 对角矩阵
’ —— 矩阵转置 sqrt —— 矩阵开方
5.矩阵的一些特殊操作
矩阵的变维
a=[1:12];b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩阵的变向 rot90:旋转; fliplr:上翻; flipud:下翻 矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角;
2. 数组乘除(,./,.\)
ab —— a,b两数组必须有相同的行
和列两数组相应元素相乘。
a=[1 2 3;4 5 6;7 8 9];
b=[2 4 6;1 3 5;7 9 10];
a.*b
ans =
2
8
18
4
15
30
49
72
90
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
save data a b ——将工作空间 中a和b变量存到data.mat文件中。 下次运行matlab时即可用load指 令调用已生成的mat文件。
load —— load data —— load data a b ——
即可恢复保 存过的所有 变量
mat文件是标准的二进制文件, 还可以ASCII码形式保存。
3. 数组乘方(.^) — 元素对元素的幂
例:
a=[1 2 3];b=[4 5 6];
z=a.^2
z=
1.00
4.00
9.00
z=a.^b
z=
1.00 32.00 729.00
四、 多项式运算
第2讲 MATLAB初步
(2) 范得蒙矩阵 范得蒙(Vandermonde)矩阵最后一列全为1, 倒数第二列为一个指定的向量,其他各列 是其后列与倒数第二列的点乘积。可以用 一个指定向量生成一个范得蒙矩阵。在 MATLAB中,函数vander(V)生成以向量V 为基础向量的范得蒙矩阵。例如, A=vander([1;2;3;5])即可得到上述范得蒙矩 阵。
各种 format 格式
格式 解释 例
format
format short format long
短格式(缺省显示格式),同short
短格式(缺省显示格式),只显示5位 长格式,双精度数15位,单精度数7位
3.1416
3.1416 3.14159265358979
format short e
format long e format short g format long g format compact format loose
(5) 伴随矩阵 MATLAB生成伴随矩阵的函数是 compan(p),其中p是一个多项式的系数向 量,高次幂系数排在前,低次幂排在后。 例如,为了求多项式的x3-7x+6的伴随矩阵, 可使用命令: p=[1,0,-7,6]; compan(p)
(6) 帕斯卡矩阵 我们知道,二次项(x+y)n展开后的系数随n 的增大组成一个三角形表,称为杨辉三角 形。由杨辉三角形表组成的矩阵称为帕斯 卡(Pascal)矩阵。函数pascal(n)生成一个n阶 帕斯卡矩阵。
2.1.3 内存变量的管理 1.内存变量的删除与修改
clear命令用于删除MATLAB工作空间中的变 量。who和whos这两个命令用于显示在 MATLAB工作空间中已经驻留的变量名清 单。who命令只显示出驻留变量的名称, whos在给出变量名的同时,还给出它们的 大小、所占字节数及数据类型等信息。
第二讲矩阵运算
六、矩阵的拆分
A(m,n):提取第m行,第n列元素 A(:,n): 提取第n列元素 A(m,:): 提取第m行元素 A(m1:m2,n1:n2):
提取第m1行到第m2行和第n1 列到第n2列的所有元素(提取子 块)。
1.矩阵元素
通过下标引用矩阵的元素,例如 A(3,2)=200
采用矩阵元素的序号来引用矩阵元素。 矩阵元素的序号就是相应元素在内存中的 排列顺序。在MATLAB中,矩阵元素按 列存储,先第一列,再第二列,依次类推。 例如 A=[1,2,3;4,5,6]; A(3) ans =
②变量名尽可能不要重复,否则会覆盖 ③当一个指令或矩阵太长时,可用•••续行
✓利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为
它专门建立一个M文件,便于修改。 步骤:
(1) 启动有关编辑程序或MATLAB文本编 辑器,并输入待建矩阵;
(2) 把输入的内容以纯文本方式存盘(设 文件名为mymatrix.m);
zeros(3) (2) 建立一个3×2零矩阵。
zeros(3,2)
(3) 设A为2×3矩阵,则可以用
zeros (size (A))建立一个与矩阵A同
样大小零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶 矩阵A zeros (size (A)) %产生一个与矩阵 A同样大小的零矩阵
A (I :i+ m ,k :k +m): 取A矩阵第i~i+ m行内,并在第
k~k +m列中的所有元素。
③还可利用一般向量和end运算符来 表示矩阵下标,从而获得子矩阵。 end表示某一维的末尾元素下标。
>>x=rand(1,5) x= 0.9501 0.2311 0.6068 0.4860 0.8913 >>x(3) ans = 0.6068 >>x(1:3) ans = 0.9501 0.2311 0.6068 >>x(3:end) ans = 0.6068 0.4860 0.8913
第2讲 Matlab的数据处理
4
例5
纯文本文件 data3.txt 中存放如下格式的数据,把其中的数据读入 Matlab 中。 从产地到销地的单位运价表 B2 B3 B4 B5 B6 B7 B8 2 6 7 4 2 5 9 9 5 3 8 5 8 2 2 1 9 7 4 3 3 6 7 3 9 2 7 1 3 9 5 7 2 6 5 5 2 2 8 1 4 3 37 22 32 41 32 43 38
2
A{2,1}=3+7i; A{2,2}=0:pi/10:pi; 命令 B=cell(3,4) 创建一个 3 4 的细胞矩阵。 ii)细胞数组内容的查看 对于上面建立的数组 A,在 Matlab 命令窗口键入变量名 A,将显示数组的简要信息。用 大括号{ }括起来的下标为细胞数组的第几个元素,用圆括号()括起来的下标为大括号{ } 对应的某个元素的分量。如 A{2,2}(1),A{4}(1)
第2讲
Matlab 的数据处理
司守奎 烟台市,海军航空工程学院数学教研室 Email:sishoukui@ Matlab 数据类型有以下几种:数值类型,字符串,日期和时间,结构数组,细胞数组 (元胞数组) ,函数句柄, Java 对象,逻辑类型等。 数值类型包括双精度类型,单精度类型,整型类型。下面我们主要讲数值类型的数据 操作。 1 结构数组与细胞数组 1.1 结构数组 有时需要将不同的数据类型组合成一个整体, 以便于引用。 这些组合在一个整体中的数 据是相互联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项都是和 该学生有联系的。 下面简单介绍结构体的定义与引用。 i)结构数组的定义 定义结构数组可以采用两种方法:用赋值语句定义和用函数 struct 定义。 用赋值语句定义结构时,只要给出结构的属性赋值,Matlab 就会自动把该属性增加到 结构中,赋值时,结构名和属性名用“.”分开。例如,下面三条语句将定义一个 1 1 的结 构数组,结构名为 student,有三个属性:name、num、test。该结构数组只有一个元素, 在命令窗口中键入结构名 student,将显示该元素所有属性的属性值特性。 ='John Doe'; student.num=123456; student.test=[79 75 73;80 78 79;90 85 80]; 再键入以下三行可给该结构数组增加一个元素。 student(2).name='Ann Lane'; student(2).num=123422; student(2).test=[70 76 73;80 99 79;90 85 80;80 85 86]; 现在结构数组 student 的维数为1 2 。当结构数组的元素超过 1 个时,MATLAB 的显示 信息中,不再显示不同属性的值,而只显示数组名、属性名和维数大小。 函数 struct 也可用来定义结构数组,其调用格式为: 结构数组名=struct(‘属性 1’,属性值 1, ‘属性 2’,属性值 2,…) ii)结构数组属性值的修改、设置和获取 结构数组一旦形成, 就可取出数组中的某个元素并修改该元素的某个属性值。 以上面建 立的 student 数组为例,命令 str=student(2).name 可取出第二个元素的 name 属性的值。 命令 n=student(2).test(4,2) 取出第二个元素 test 的值中第四行第二列上的数。 同理,可用命令 student(2).test(4,2)=0 修改第二个元素 test 的值中第四行第二列上的数的值。 关于结构数组有表 1 中的函数。
第二讲 MATLAB基本操作
三、矩阵及其运算
(四)矩阵的基本数值运算
(1)矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算是指矩阵各元素与常 数之间的四则运算。 数之间的四则运算。 例如: 例如 a=[1,2,3;4,5,6;7,8,9]; 求: c=a+2; d=a-2; e=a*2; f=a/2;
(一)矩阵的生成
矩阵的生成有多种方式,通常使用的有四种: 矩阵的生成有多种方式,通常使用的有四种: (1)在命令窗口中直接输入矩阵; 在命令窗口中直接输入矩阵; 把矩阵的元素直接排列到方括号中, 把矩阵的元素直接排列到方括号中,每行 内的元素用空格或逗号相隔, 内的元素用空格或逗号相隔,行于行之间的内 容用分号相隔。 容用分号相隔。 通过语句和函数产生矩阵; (2)通过语句和函数产生矩阵; 文件中建立矩阵; (3)在M文件中建立矩阵; 从外部的数据文件中导入矩阵; (4)从外部的数据文件中导入矩阵; 例如: 例如 a=[1 2 3;4 5 6;7 8 9], b=[2,4,6,8;1,3,5,7;1,2,3,4],
四、数组及其运算
(一)数组的生成
(1)在命令窗口中直接输入向量 格式:a=[a1,a2,a3, …an ] 格式: (2)等差元素向量的生成 生成法: 格式: (i)冒号“:”生成法: 格式:a=a1:m:an )冒号“ (ii)使用线性等分向量函数 )使用线性等分向量函数linspace法: 法 格式: 格式:a=linspace(a1,an,n)
三、矩阵及其运算
(三)矩阵中元素的操作
的第r行 (1)提取矩阵 的第 行:A(r,:) )提取矩阵A的第 ( ,:) 的第r列 (:,r) (2)提取矩阵 的第 列:A(:, ) )提取矩阵A的第 (:, 的每一列, 拉伸为一个列向量: (:) (3)依次提取矩阵 的每一列,将A拉伸为一个列向量:A(:) )依次提取矩阵A的每一列 拉伸为一个列向量 (4)取矩阵 的第 1~i2行、第j1~j2列构成新矩阵 的第i 列构成新矩阵:A(i1:i2, j1:j2) )取矩阵A的第 的第i 构成新矩阵:A(i2:-1:i1,:) (5)以逆序提取矩阵 的第 1~i2行,构成新矩阵 )以逆序提取矩阵A的第 : 的第j 构成新矩阵:A(:, j2:-1:j1 ) (6)以逆序提取矩阵 的第 1~j2列,构成新矩阵 )以逆序提取矩阵A的第 : 的第i 构成新矩阵:A(i1:i2,: ] ,:)=[ (7)删除 的第 1~i2行,构成新矩阵 )删除A的第 的第j 构成新矩阵:A(:, (8)删除 的第 1~j2列,构成新矩阵 :, j1:j2)=[ ] )删除A的第 拼接成新矩阵: (9)将矩阵 和B拼接成新矩阵:[A B];[A;B] )将矩阵A和 拼接成新矩阵 ; ;
Matlab第2章 数值数组及向量化运算
21 22 23 24
六. A ( 3 , 1:3 ) = 9 10 11
1.3:二维数组元素的标识和寻访 ——数值数组的创建和寻访
二维数组 A
1 2 3 4 5 6 7 8 9 10 11 12
单下标法 一、 A(:)=1:12 A= 1 2
二、A(8)
3 4
5 6
7 8
9 11 10 12
ans = 8
标, A=rand(3,3),然后根据A写出两个矩阵:一个对角阵 B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全 为0,而其余元素与对应的A阵元素相同。(提示: diag diag)
作业提交电子版的word文档,由学习委员统一收齐,发到 smnsss@邮箱,文件命名为“学号+姓名+第几次作业”,比如 你叫魏川东,学号是1207200181,第1次作业,那文件名就应该是: “1207200181魏川东1”。本周六晚上12:00之前发到我的邮箱。
1.4:数组操作技法综合 ——数值数组的创建和寻访
b=diag(A) B=diag(b) b= 1 4 B= 1 0 0 4 D1=repmat(B,2,4) D1 = 1 0 1 0 0 4 0 4 1 0 1 0 0 4 0 4
%即ReplicateMatrix,复制和平铺矩阵 % 1 0 1 0 0 4 0 4 1 0 1 0 0 4 0 4
randn(2,3)
0
0
1
函数生成法
1.2:二维数组的创建 ——数值数组的创建和寻访
D= 1 0 0 0 1 0 0 0 1 diag(D) ans = 1 1 1 diag(diag(D)) ans = 1 0 0 0 1 0 0 0 1
matlab7.0实用教程课件-第二讲
第二讲 Matlab数值计算
1.2 Matlab矩阵的创建
创建数组变量的一般方法
创建变量的赋值语句的一般格式 var=expression var为变量名 expression为MATLAB合法表达式
可以是单独的常数值或数值数组; 也可以由常数值、其他变量(部分或全部)、数 值数组和运算符(+、-等)构成。
【例2-1】键入并执行a2=[1 2 3;4 5 6;7 8 9] 【例2-2】键入并执行a2=[1:3;4:6;7:9] %结果同上
2015/10/25 College of Mechanical Engineering of University of South China , Hunan Hengyang
1
2
3
2
3 15
4
第二讲 Matlab数值计算
1.2 Matlab矩阵的创建
方法二:函数法(p104-107)
函数ones(生成全1矩阵)、zeros (生成全0矩阵) 、 eye(单位矩阵)、reshape(由向量重构生成矩阵)
【例2-4】创建全1的3〓3矩阵。 >> eye(2,3) >>ones(3) 【例2-5】创建全0的2〓3矩阵。 ans = >>zeros(2,3) 【例2-6】创建2〓3的单位矩阵。 1 0 0 >>eye(2,3) 思考题:若已知矩阵A,如何求与A同阶的单位
2015/10/25 College of Mechanical Engineering of University of South China , Hunan Hengyang 9
第二讲 Matlab数值计算
第二讲 MATLAB的数值计算 —— matlab 具有出色的数值计算能力,占据世界上数值计算软件的主导地位
x=a\b x= 2.00 3.00
2.超定方程组的解
方程 ax=b ,m<n时此时不存在唯一解。 方程解 (a ' a)x=a ' b
x=(a' a)-1 a ' b —— 求逆法 x=a\b —— matlab用最小二乘法找一
个准确地基本解。
例: x1+2x2=1 2x1+3x2=2 3x1+4x2=3
特征多项式一定是n+1维的
特征多项式第一个元素一定是1
例:a=[1 2 3;4 5 6;7 8 0]; p=poly(a)
p =1.00 -6.00 -72.00 -27.00 p是多项式p(x)=x3-6x2-72x-27的
matlab描述方法,我们可用: p1=poly2str(p,‘x’) — 函数文件,显示 数学多项式的形式
matlab函数名必须小写。
3. 矩阵的修改
直接修改 可用键找到所要修改的矩阵,用键
移动到要修改的矩阵元素上即可修改。 指令修改
可以用A(,)= 来修改。
例如
a=[1 2 0;3 0 5;7 8 9]
a =1 2 0
305 789
还可以用函数subs
a(3,3)=0 a =1 2 0
p1 =x^3 - 6 x^2 - 72 x - 27
2.roots —— 求多项式的根
a=[1 2 3;4 5 6;7 8 0];p=poly(a) p=
1.00 -6.00 -72.00 -27.00 r=roots(p) r = 12.12
-5.73 ——显然 r是矩阵a的特征值 -0.39
用除法求的解x是具有最多零元素的 解 是具有最小长度或范数的解,这个 解是基于伪逆pinv求得的。
第二章:MATLAB数据
strcmp(str1,str2) 比较str1和str2,相等返回1,否则返回0 比较str1和str2,相等返回1,否则返回0 stricmp(str1,str2) 同上,但不区分大小写 strncmp(str1,str2,n) 比较str1和str2中前n个字符,相等返回 比较str1和str2中前n 1,否则返回0 ,否则返回0 strncmpi(str1str2,n) 同上,但不区分大小写 findstr(str1,str2) 在str1中查找str2的起始位置 str1中查找str2的起始位置 strrep(str1,str2,str3) 在str1中含有str2的所有位置用str3代 str1中含有str2的所有位置用str3代 替 strtok(str1,str2) 返回str1中含有str2的第一个标记前所有的 返回str1中含有str2的第一个标记前所有的 str1的部分。如果str2没有指定,则返回str1中不含空格的第 str1的部分。如果str2没有指定,则返回str1中不含空格的第 一个序列 strcat(str1,str2,… strcat(str1,str2,…) 将字符串连接起来 strvcat(str1,str2,… strvcat(str1,str2,…) 将字符串连成一个列向量 strmatch(key,strs) 检查strs中的各行,返回一个向量,它包 检查strs中的各行,返回一个向量,它包 含了行以字符串key开头的行号 含了行以字符串key开头的行号 例如: strmatch('max',strvcat('max','minimax','maximum')) eval(str) 执行str中包含的matlab命令 执括起来的字符序列。 字符串是用单撇号括起来的字符序列 。 例 如 , 'Central South University'。 若字符串 University' 。 中的字符含有单撇号, 中的字符含有单撇号 , 则该单撇号字符应 用两个单撇号来表示。 用两个单撇号来表示。 字 符 串 是 以 ASCII 码 形 式 存 储 的 。
MATLAB教程第2讲 MATLAB变量和数据操作
2.2.4 数据的输出格式
MATLAB 用十进制数表示一个常数, 用十进制数表示一个常数, 具体可采用日常记数法和科学记数法两种表 示方法。 示方法。 在一般情况下, 在一般情况下,MATLAB 内部每一个 数据元素都是用双精度数来表示和存储的。 数据元素都是用双精度数来表示和存储的。 数据输出时用户可以用format命令设置 数据输出时用户可以用 命令设置 或改变数据输出格式。 命令的格式为: 或改变数据输出格式。format命令的格式为: 命令的格式为 format 格式符 其中格式符决定数据的输出格式
2.2.2 内存变量文件
文件可以把当前MATLAB工 利用 MAT文件可以把当前 文件可以把当前 工 作空间中的一些有用变量长久地保留下来, 作空间中的一些有用变量长久地保留下来, 扩展名是 .mat。 。 MAT文件的生成和装入由 文件的生成和装入由save和load命 文件的生成和装入由 和 命 令来完成。常用格式为: 令来完成。常用格式为: save 文件名 [变量名表 [-append][-ascii] 变量名表] 变量名表 load 文件名 [变量名表 [-ascii] 变量名表] 变量名表
2. 利用 文件建立矩阵 利用M文件建立矩阵 对于比较大且比较复杂的矩阵, 对于比较大且比较复杂的矩阵,可 以为它专门建立一个M文件 文件。 以为它专门建立一个M文件。 下面通过一个简单例子来说明如何 利用M文件创建矩阵 文件创建矩阵。 利用 文件创建矩阵。
利用M文件建立 文件建立MYMAT矩阵。 矩阵。 例2-2 利用 文件建立 矩阵 (1) 启动有关编辑程序或 启动有关编辑程序或MATLAB文本编 文本编 辑器,并输入待建矩阵: 辑器,并输入待建矩阵: MYMAT=[1,2,3,4,5;5,4,3,2,1] (2) 把输入的内容以纯文本方式存盘 设文 把输入的内容以纯文本方式存盘(设文 件名为mymatrix.m); 件名为 ; (3) 在MATLAB命令窗口中输入 命令窗口中输入mymatrix, 命令窗口中输入 , 即运行该M文件 文件, 即运行该 文件,就会自动建立一个名为 MYMAT的矩阵,可供以后使用。 的矩阵, 的矩阵 可供以后使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 3 MATLAB常用数学函数
MATLAB 提供了许多数学函数,函数 的自变量规定为矩阵变量,运算法则是将函 数逐项作用于矩阵的元素上,因而运算的结 果是一个与自变量同维数的矩阵。
Matlab中常见数学函数
sin、cos、tan、cot、sec、csc、… asin、acos、atan、acot、asec、acsc、… exp、log、log2、log10、sqrt abs、conj、real、imag、sign fix、floor、ceil、round、mod、rem max、min、sum、mean、sort、fft norm、rank、det、inv、eig、lu、qr、svd ……
显然,序号(Index)与下标(Subscript )是 一一对应的,以m×n矩阵A为例,矩阵元素 A(i,j) 的序号为 (j-1)*m+i。其相互转换关系 也可利用sub2ind和ind2sub函数求得。
2. 矩阵拆分 (1) 利用冒号表达式获得子矩阵 ① A(:,j)表示取A矩阵的第j列全部元素; A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示 取A矩阵第i行、第j列的元素。 ② A(i:i+m,:)表示取A矩阵第i~i+m行的全 部元素;A(:,k:k+m)表示取A矩阵第k~k+m列 的全部元素,A(i:i+m,k:k+m)表示取A矩阵第 i~i+m行内,并在第k~k+m列中的矩阵下标,从而获得子矩阵。end表示某 一维的末尾元素下标。
第2讲 变量和数据操作
2.1 变量与赋值 2.2 内存变量的管理 2.3 MATLAB常用数学函数 2.4 MATLAB矩阵 2.5 M文件
2.1 变量与赋值
2.1.1 变量命名
以字母开头
后面可以跟 字母、数字 和 下划线 长度不超过 63 个字符(6.5 版本以前为 19 个) 变量名 区分字母的 大小 写
(3) 希尔伯特矩阵 在MATLAB中,生成希尔伯特矩阵的函 数是hilb(n)。 使用一般方法求逆会因为原始数据的微 小扰动而产生不可靠的计算结果。MATLAB 中,有一个专门求希尔伯特矩阵的逆的函数 invhilb(n),其功能是求 n阶的希尔伯特矩阵 的逆矩阵。
例2-6 求4阶希尔伯特矩阵及其逆矩阵。 命令如下: format rat %以有理形式输出 H=hilb(4) H=invhilb(4)
2.4 MATLAB矩阵
2.4.1 向量与矩阵的生成
向量的生成 直接输入: a=[1,2,3,4] 冒号运算符 从矩阵中抽取行或列
例:a=[1:4] ==> a=[1, 2, 3, 4]
b=[0:pi/3:pi] ==> b=[0, 1.0472, 2.0944, 3.1416] c=[6:-2:0] ==> c = [6, 4, 2, 0]
2.3.2 MATLAB特殊变量表
系统预定义变量
pi 圆周率 ,其值为 imag(log(-1)) inf/Inf
无穷大
nan/NaN Not-a-Number,一个不定值,如 0/0 eps 浮点运算相对精度
i/j
虚部单位,即 1
应尽量避免给系统预定义变量重新赋值!
特殊变量 ans
3.1416 3.1416e+000
3.141592653589793e+000 3.1416
format long g
format compact format loose
长格式g方式
压缩格式 自由格式
3.14159265358979
format + / format bank / format rat / format hex (详情查看联机帮助)
(2) 利用空矩阵删除矩阵的元素 在MATLAB中,定义[ ]为空矩阵。给变 量X赋空矩阵的语句为X=[ ]。 注意,X=[ ] 与clear X不同,clear是将X 从工作空间中删除,而空矩阵则存在于工作 空间中,只是维数为0。
2.4.3 特殊矩阵
1. 通用的特殊矩阵 常用的产生通用特殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones:产生全1矩阵(幺矩阵)。 eye:产生单位矩阵。 rand:产生0~1间均匀分布的随机矩阵。 randn:产生均值为 0,方差为 1的标准 正态分布随机矩阵。
函数使用说明: (1) 三角函数以弧度为单位计算。 (2) abs 函数可以求实数的绝对值、复数 的模、字符串的ASCII码值。 (3) 用于取整的函数有 fix、floor、ceil、 round,要注意它们的区别。 (4) rem与 mod函数的区别。rem(x,y)和 mod(x,y) 要求 x, y 必须为相同大小的实矩阵 或为标量。
2. 用于专门学科的特殊矩阵 (1) 魔方矩阵 魔方矩阵有一个有趣的性质,其每行、每 列及两条对角线上的元素和都相等。对于 n 阶 魔方阵,其元素由 1,2,3,…,n2 共 n2 个整数组 成。 MATLAB提供了求魔方矩阵的函数 magic(n),其功能是生成一个n阶魔方阵。
例2-5 将101~125等25个数填入一个5行5列的 表格中,使其每行每列及对角线的和均为565。 M=100+magic(5)
例2-3 分别建立3×3、3×2和与矩阵A同样大 小的零矩阵。 (1) 建立一个3×3零矩阵:zeros(3) (2) 建立一个3×2零矩阵:zeros(3,2) (3) 设A为2×3矩阵,则可以用 zeros(size(A))建立一个与矩阵A同样大小零矩 阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样 大小的零矩阵
其中,文件名可以带路径,但不需带扩展 名.mat,命令隐含一定对.mat文件进行操作。 变量名表中的变量个数不限,只要内存或 文件中存在即可,变量名之间以空格分隔。当 变量名表省略时,保存或装入全部变量。 -ascii选项使文件以ASCII格式处理,省略 该选项时文件将以二进制格式处理。 save命令中的 –append 选项控制将变量追 加到MAT文件中。
例2-4 建立随机矩阵: (1) 在区间[20,50]内均匀分布的5阶随机矩 阵。 (2) 均值为 0.6、方差为 0.1的5阶正态分布 随机矩阵。 命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5) 此外,常用的函数还有reshape(A,m,n), 它在矩阵总元素保持不变的前提下,将矩阵A 重新排成m×n的二维矩阵。
(2) 范得蒙矩阵 范得蒙(Vandermonde)矩阵最后一列全为1, 倒数第二列为一个指定的向量,其他各列是其 后列与倒数第二列的点乘积。可以用一个指定 向量生成一个范得蒙矩阵。 在MATLAB中,函数vander(V)生成以向 量V为基础向量的范得蒙矩阵。 例如,A=vander([1;2;3;5])即可得到上述 范得蒙矩阵。
2.4.2 矩阵的拆分
1. 矩阵元素 通过下标引用矩阵的元素,例 A(3,2)=200 采用矩阵元素的序号来引用矩阵元素。 矩阵元素的序号就是相应元素在内存中的排 列顺序。在 MATLAB 中,矩阵元素按列存 储,先第一列,再第二列,依次类推。例如 A=[1,2,3;4,5,6]; A(3) ans = 2
2.1.3 预定义变量
在MATLAB工作空间中,还驻留几个由 系统本身定义的变量。 例如,用 pi 表示圆周率π的近似值,用 i, j 表示虚数单位。 预定义变量有特定的含义,在使用时, 应尽量避免对这些变量重新赋值。
2.2 内存变量的管理
2.2.1 内存变量的删除与修改
MATLAB 工作空间窗口专门用于内存 变量的管理。在工作空间窗口中可以显示所 有内存变量的属性。 当选中某些变量后,再单击 Delete按钮, 就能删除这些变量。 当选中某些变量后,再单击 Open 按钮, 将进入变量编辑器。通过变量编辑器可以直 接观察变量中的具体元素,也可修改变量中 的具体元素。
(5) 伴随矩阵 MATLAB生成伴随矩阵的函数是 compan(p),其中p是一个多项式的系数向量, 高次幂系数排在前,低次幂排在后。 例如,为了求多项式的x3-7x+6的伴随矩 阵,可使用命令: p=[1,0,-7,6]; compan(p)
(4) 托普利兹矩阵 托普利兹(Toeplitz)矩阵除第一行第一列 外,其他每个元素都与左上角的元素相同。 生成托普利兹矩阵的函数是toeplitz(x,y), 它生成一个以x为第一列,y为第一行的托普利 兹矩阵。这里x, y均为向量,两者不必等长。 toeplitz(x)用向量x生成一个对称的托普利兹矩 阵。 例如 T=toeplitz(1:6)
常见矩阵生成函数
zeros(m,n) ones(m,n) eye(m,n) diag(X) tril(A) Atriu() rand(m,n) randn(m,n) 生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n) 生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) 生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 提取一个矩阵的下三角部分 提取一个矩阵的上三角部分 产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n) 产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)
clear命令用于删除MATLAB工作空间中 的变量。
who和whos这两个命令用于显示在 MATLAB工作空间中已经驻留的变量名清单。 who命令只显示出驻留变量的名称。