第2章 MATLAB赋值、矩阵及其运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>> B=[1 2 3 4;5 6 7 8;9 10 11 12; 13 14 15 16]' B= 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 >> B(3,4) ans = 15 >> B((4-1)*4+3) ans = 15 >> B(15) ans = 15
例2.1使用from:step:to方式生成以下矩阵 >>x1=2:5 >>x2=2:0.5:4 >>x3=5:-1:2 >>x4=2:-1:3 >>x5=2:-1:0.5 >>x6=[1:2:5;1:3:7]
(2)使用 使用linspace和logspace函数生成 使用 和 函数生成 向量
• linspace用来生成线性等分向量 用来生成线性等分向量 格式: 格式:linspace(a,b,n) 其中: 和 是生成向量的第一个和最 其中:a和b是生成向量的第一个和最 后一个元素, 是元素总数 是元素总数(默认 后一个元素,n是元素总数 默认 n=100)。 。 显然, 显然,linspace(a,b,n)与a:(b-a)/(n-1):b 与 等价。 等价。
如 >> B(:,3) ans = 9 10 11 12 >> B(2,:) ans = 2 6
10
14
(2) 利用空矩阵删除矩阵的元素 为空矩阵。 在MATLAB中,定义 为空矩阵。给变 中 定义[]为空矩阵 的语句为X=[]。注意,X=[]与 量X赋空矩阵的语句为 赋空矩阵的语句为 。注意, 与 clear X不同,clear是将 从工作空间中删 不同, 是将X从工作空间中删 不同 是将 而空矩阵则存在于工作空间中, 除X ,而空矩阵则存在于工作空间中,只 是维数为0。 是维数为 。 如:
例2.2用linspace和logspace生成行向量 用 和 生成行向量
>> x1=linspace(0,2*pi,5) x1= 0 1.5708 3.1416 4.7124 6.2832 >>x2=logspace(0,2,3) x2= 1 10 100
4.建立大矩阵 .
大矩阵可由方括号中的小矩阵或向量建立起来。
3.通过语句等生成矩阵 .
(1)利用冒号表达式建立一个向量 利用冒号表达式建立一个向量 冒号表达式可以产生一个行向量, 冒号表达式可以产生一个行向量,一般 格式是: 格式是: from:step:to 其中from为初始值,step为步长,to为终止 为初始值, 为步长, 为终止 其中 为初始值 为步长 值。 省略时则默认为1。 注:(1)step省略时则默认为 。 省略时则默认为 (2)step>0且from>to时为空矩阵。 时为空矩阵。 且 时为空矩阵 (3)step<0且from<to时为空矩阵。 且 时为空矩阵。 时为空矩阵
3.复数:MATLAB用特殊变量“i”和“j” 复数: 用特殊变量“ 复数 用特殊变量 ” ” 表示虚数的单位。 表示虚数的单位。 复数的表示: 复数的表示:z=a+b*i或z=a+b*j 或 z=a+bi或z=a+bj(b为常量 为常量) 或 为常量 z=r*exp(i*0)
计算表达式的值,并显示计算结果。 例2-1 计算表达式的值,并显示计算结果。 命令窗口输入命令: 在MATLAB命令窗口输入命令: 命令窗口输入命令 >>a=1-2i; >>x=real(a); %计算实部 计算实部 >>y=imag(a); %计算虚部 计算虚部 >>z=abs(a); %计算幅值 计算幅值 >>w=angle(a)*180/pi %计算相 计算相 角
2.2 MATLAB矩阵和数组 矩阵和数组
2.2.1 矩阵的输入 1.直接输入法 . 将矩阵的元素用方括号括起来; 将矩阵的元素用方括号括起来 空格或逗号分隔同一行的各元素; 空格或逗号分隔同一行的各元素 分号或者回车分隔不同行。 分号或者回车分隔不同行。
例如:输入矩阵c:
>>c=[1 2;3 4;5 3*2] 结果: c= 1 2 3 4 5 6 或者输入>>c=[1,2;3,4;5,3*2] 或者>>c=[1 2 34 5 6]
如 >> a=[1,2,3];b=[4,5,6]; c=[a,b] c= 1 2 3 4 5 >> d=[a;b] d= 1 2 3 4 5 6
6
2.2.2 矩阵元素 1.矩阵元素修改与提取 . 通过下标修改矩阵的元素, 通过下标修改矩阵的元素,例如 A(3,2)=200 采用矩阵元素的序号来引用矩阵元素。 采用矩阵元素的序号来引用矩阵元素。矩阵元素 的序号就是相应元素在内存中的排列顺序。 的序号就是相应元素在内存中的排列顺序。在 MATLAB中,矩阵元素按列存储,先第一列,再 按列存储, 中 矩阵元素按列存储 先第一列, 第二列,依次类推。例如3x3矩阵 矩阵A 第二列,依次类推。例如 矩阵 A(3) %等价于 等价于A(3,1) 等价于 ans = 9 A(3,2) %等价于 等价于A(6) 等价于 ans = 200 显然,序号(Index)与下标 与下标(Subscript )是一一对应 显然,序号 与下标 是一一对应 矩阵A为例 的,以m×n矩阵 为例,矩阵元素 × 矩阵 为例,矩阵元素A(i,j)的序号为 的序号为 [(j-1)*m]+i, 即整行乘列再加余列。 整行乘列再加余列。
第2章 MATLAB矩阵及其运算 章 矩阵及其运算 2.1 变量和数据操作 2.2 MATLAB矩阵 矩阵 2.3 MATLAB运算 运算 2.4 矩阵分析 2.5 矩阵的超越函数 2.6 字符串 2.7 结构数据和单元数据 2.8 稀疏矩阵
2.1 变量和数据操作 2.1.1 变量与赋值 1.变量命名 . 在MATLAB 7.0中,变量名是以字母开头, 中 变量名是以字母开头, 后接字母、数字或下划线的字符序列, 后接字母、数字或下划线的字符序列,最 个字符。 多63个字符。在MATLAB中,变量名区分 个字符 中 字母的大小写。 字母的大小写。
>> B=[] B= [] B为0X0矩阵 为 矩阵
2.2.3 特殊矩阵 1.通用的特殊矩阵 . 常用的产生通用特殊矩阵的函数有: 常用的产生通用特殊矩阵的函数有: zeros(m,n):产生 ×n全0矩阵 零矩阵 。 矩阵(零矩阵 :产生m× 全 矩阵 零矩阵)。 ones(m,n):产生 ×n全1矩阵 幺矩阵 矩阵(幺矩阵 :产生m× 全 矩阵 幺矩阵) eye(m,n):产生 ×n单位矩阵 对角为 。 单位矩阵(对角为 :产生m× 单位矩阵 对角为1)。 rand(m,n):产生 ~1间均匀分布的随机矩 :产生0~ 间均匀分布的随机矩 阵。 randn(m,n):产生均值为 ,方差为 的标 :产生均值为0,方差为1的 准正态分布随机矩阵 随机矩阵。 准正态分布随机矩阵。
2.赋值语句 . (1) 变量 表达式 变量=表达式 (2) 表达式 其中表达式是用运算符将有关运算量连接 起来的式子,其结果是一个矩阵。 起来的式子,其结果是一个矩阵。
2.1.2 预定义变量 工作空间中, 在MATLAB工作空间中,还驻留几个由系统 工作空间中 本身定义的变量。例如, 表示圆周率π 本身定义的变量。例如,用pi表示圆周率 表示圆周率 的近似值, , 表示虚数单位 表示虚数单位。 的近似值,用i,j表示虚数单位。 预定义变量有特定的含义,在使用时, 预定义变量有特定的含义,在使用时,应 尽量避免对这些变量重新赋值。 尽量避免对这些变量重新赋值。
• 2.矩阵拆分 . (1) 利用冒号表达式获得子矩阵 表示取A矩阵的第 列全部元素; ① A(:,j)表示取 矩阵的第 列全部元素;A(i,:) 表示取 矩阵的第j列全部元素 表示A矩阵第 行的全部元素; 矩阵第i行的全部元素 表示取A矩阵 表示 矩阵第 行的全部元素;A(i,j)表示取 矩阵 表示取 列的元素。 第i行、第j列的元素。 行 列的元素 表示取A矩阵第 ② A(i:i+m,:)表示取 矩阵第 ~i+m行的全部元 表示取 矩阵第i~ 行的全部元 表示取A矩阵第 素;A(:,k:k+m)表示取 矩阵第 ~k+m列的全部 表示取 矩阵第k~ 列的全部 元素, 表示取A矩阵第 行内, 元素,A(i:i+m,k:k+m)表示取 矩阵第 ~i+m行内, 表示取 矩阵第i~ 行内 并在第k~ 列中的所有元素。 并在第 ~k+m列中的所有元素。 列中的所有元素 此外,还可利用一般向量和end运算符来表示矩阵 此外,还可利用一般向量和 运算符来表示矩阵 下标,从而获得子矩阵。 下标,从而获得子矩阵。end表示某一维的末尾元 表示某一维的末尾元 素下标。 素下标。如: >>A(1,end) ans = 4
2.利用M文件建立矩阵 .利用 文件建立矩阵 对于比较大且比较复杂的矩阵, 对于比较大且比较复杂的矩阵,可以为 它专门建立Leabharlann Baidu个M文件 文件。 它专门建立一个 文件。下面通过一个简 单例子来说明如何利用M文件创建矩阵 文件创建矩阵。 单例子来说明如何利用 文件创建矩阵。
利用M文件建立 文件建立MYMAT矩阵。 矩阵。 例2-2 利用 文件建立 矩阵 (1) 启动有关编辑程序或 启动有关编辑程序或MATLAB文本编辑 文本编辑 并输入待建矩阵: 器,并输入待建矩阵: (2) 把输入的内容以纯文本方式存盘 设文 把输入的内容以纯文本方式存盘(设文 件名为mymatrix.m)。 件名为 。 (3) 在MATLAB命令窗口中输入 命令窗口中输入mymatrix, 命令窗口中输入 , 即运行该M文件 文件, 即运行该 文件,就会自动建立一个名为 MYMAT的矩阵,可供以后使用。 的矩阵, 的矩阵 可供以后使用。
• logspace用来生成对数等分向量 用来生成对数等分向量 格式: 格式:logspace(a,b,n) 其中: 和 分别是开始值和结束值 分别是开始值和结束值, 其中:a和b分别是开始值和结束值,n 是数据个数(默认 默认n=50)。 是数据个数 默认 。 生成10^a到10^b之间按对数等分的 个 之间按对数等分的n个 生成 到 之间按对数等分的 元素的行向量
如 >> h=ones(2,3) h= 1 1 1 1 1 1 >> g=eye(3) g= 1 0 0 0 1 0 0 0 1
分别建立3× 、 × 和与矩阵 和与矩阵A同样大小的 例2-3 分别建立 ×3、3×2和与矩阵 同样大小的 零矩阵。 零矩阵。 (1) 建立一个3×3零矩阵。 建立一个 × 零矩阵。 零矩阵 zeros(3) (2) 建立一个 ×2零矩阵。 建立一个3× 零矩阵 零矩阵。 zeros(3,2) (3) 设A为2×3矩阵,则可以用 矩阵, 为 × 矩阵 则可以用zeros(size(A))建立 建立 一个与矩阵A同样大小零矩阵。 一个与矩阵 同样大小零矩阵。 同样大小零矩阵 A=[1 2 3;4 5 6]; %产生一个 ×3阶矩阵 产生一个2× 阶矩阵 阶矩阵A 产生一个 zeros(size(A)) %产生一个与矩阵 同样大小的 产生一个与矩阵A同样大小的 产生一个与矩阵 零矩阵
例2-4 建立随机矩阵: 建立随机矩阵: (1) 在区间 在区间[20,50]内均匀分布的 阶随机矩阵。 内均匀分布的5阶随机矩阵 内均匀分布的 阶随机矩阵。 (2) 均值为 、方差为 的5阶正态分布随 均值为0.6、方差为0.1的 阶正态分布随 机矩阵。 机矩阵。 命令如下: 命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5) 此外,常用的函数还有reshape(A,m,n),它 此外,常用的函数还有 , 在矩阵总元素保持不变的前提下,将矩阵A 在矩阵总元素保持不变的前提下,将矩阵 重新排成m× 的二维矩阵 的二维矩阵。 重新排成 ×n的二维矩阵。
2.1.3 数据
1.数据的表达方式:十进制,10e-309~10e309 数据的表达方式:十进制, 数据的表达方式 2.矩阵和数组的概念: 矩阵和数组的概念: 矩阵和数组的概念 (1)标量:含有一个数的矩阵。 标量: 标量 含有一个数的矩阵。 (2)向量:只有 行或 列的矩阵。 向量: 行或1列的矩阵 向量 只有1行或 列的矩阵。 (3)矩阵:二维数组。 矩阵: 矩阵 二维数组。 (4)数组:n维数组。 数组: 维数组 维数组。 数组 向量和标量是矩阵的特例, 注:向量和标量是矩阵的特例,向量和矩阵 是数组的特例。 是数组的特例。