matlab第二讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(exno21)
一、矩阵的创建
3、通过M文件建立矩阵 直接输入一个规模比较大的矩阵是很艰苦的工作, 而且出错也不容易修改,这里利用M文件的特点 将所要输入的矩阵按格式先写到一个文本文件中, 然后,将此文件以M为扩展名命名,这就是M文 件。在MATLAB命令窗口中输入此M文件名,则 要输入的大型矩阵就被直接输入到内存中了。
Matlab语言程序设计
理学院
徐屹
东北电力大学
Northeast Dianli College
第二讲 矩阵的输入与生成
一 二
矩阵的创建 数组的生成 矩阵的裁剪
三 3
四 4
矩阵的生成
第二讲 矩阵的输入与生成
一、矩阵的创建
1.直接输入矩阵
矩阵的 创建
2.通过函数创建数值矩阵 3.通过M文件创建矩阵
四、矩阵的生成
ones(n) ——建立一个nxn的1矩阵。 ones(m,n) ——建立一个mxn的1矩阵。 ones(size( A )) ——建立一个和矩阵A同样大小的1矩阵。 zeros(n) ——建立一个nxn的0矩阵。 zeros( m , n) ——建立一个mxn的0矩阵。 zeros(size(A)) ——建立一个和矩阵A同样大小的0矩阵。 eye(n) ——建立一个nxn的单位矩阵。注意eye命令只能用 来建立二维矩阵。 eye(m, n) ——建立一个mxn的单位矩阵。注意eye命令只 能用来建立二维矩阵。 eye(size(A)) ——建立一个和矩阵A同样大小的单位矩阵。
四、矩阵的生成
rand——产生在0~1之间均匀分布的随机数;每调用一次 给一个新的数值。 rand+i*rand——产生一个复数随机数。 rand(n)——产生一个nxn的矩阵,其元素为0~1之间均匀 分布随机数。 rand(m,n)——产生一个mxn的矩阵,其元素是0~1之间均 匀分布的随机数。 randn——产生零均值、单位方差的正态分布随机数。 randn(n)——产生一个n×n的矩阵,其元素为零均值、单 位方差的正态分布随机数。 randn(m,n)——产生一个m×n的矩阵,其元素为零均值、 单位方差的正态分布随机数。
三、矩阵的裁剪 A([j1 j2 „ ]) 返回一个行向量,其中的元素为A ( : )中的第j1、j2„元素。 A(:,[j1 j2„]) 返回矩阵A的第j1列、第j2列等的 列向量。 A([i1 i2„] ,:) 返回矩阵A的第i1行、第i2行等 的行向量。 A([i1 i2...],[j1 j2...]) 返回矩阵第i1行、第 i2行等和第j1列、第j2列等的元素。
二、数组的生成
2、用Linspace函数构造数组 用Linspace函数构造数组需要指定首尾值和元素总个数。 linspace(a,b) 在区间[a,b]上创建一个有1 0 0个元素 的向量,这1 0 0个数把整个区间线性分隔。 linspace(a,b,n) 在区间[a,b]上创建一个有n个元素的 向量。 这个命令和冒号表示形式相近,但是它直接定义了数 据的个数。
一、矩阵的创建
例如:>>a3=[2 4 6 8 10];
>>a2=[2,4 6,8,10];
>>a1=[2;4;6;8;10];
Matlab可以在行和列向量之间进行转置,使用“`”,如在 本例中,可以使用如下命令实现上述3个向量的转置,在 “命令”窗口中输入如下命令,并按Enter键确认。
>>a3’ >>a2’ >>a1’
4.导入数据创建矩阵
一、矩阵的创建 1、直接输入 >>a=[1,2,3;4,5,6]; 注:1.必须使用方括号 2.当一行输不完时可以用续行“„” 3.行与行之间用分号或回车符分隔 4.同行元素用空格或逗号分隔 5.矩阵元素可以是任何matlab表达式,可以是 实数,也可是复数,复数可用特殊函数i,j 输入 6.该方法只适合创建小型矩阵
四、矩阵的生成
hilb(n)——生成一个n×n的希尔伯特矩阵。 invhilb(n)——生成一个n×n的希尔伯特矩阵的逆矩阵, 其元素都为整数。 magic(n)——给出一个n×n的魔方矩阵。 pascal(n)——返回一个n×n的Pascal矩阵,它是对称、 正定的矩阵,它的元素由Pascal三角组成。它的逆矩阵的 所有元素是整数。 vander(x) ——生成范德蒙矩阵。 如:>>x=[1 2 3 4 5] >>A=vander(x)
Matlab将矩阵M在垂向上复制v次,在水平方向上复制 h次。例如,下面将已有矩阵A复制到新矩阵B中。
A=[8 1 6;3 5 7;4 9 2]
B=repmat(A,2,4)
(exno23)
四、矩阵的生成
用blkdiag函数创建块对角矩阵
A=magic(3);
B=[-5 -6 -9;-4 -4 -2]; C=eye(2)*8; D=blkdiag(A,B,C) 读下面语句的含义 (exno24)
一、矩阵的创建 符号的作用:
逗号和分号的作用 逗号和分号可作为指令间的分隔符,matlab允许多条语句 在同一行出现。 分号如果出现在指令后,屏幕上将不显示结果。 使用逗号时,命令语句的运行结果将显示。 注意:只要是赋过值的变量,不管是否在屏幕上显示过, 都存储在工作空间中,以后可随时显示或调用。变量名尽 可能不要重复,否则会覆盖 。
四、矩阵的生成
triu(A)——生成一个和A大小相同的上三角矩阵。该矩阵 的主对角线及以上元素取自A中相应元素,其余元素都为 零。 triu(A,k)——生成一个和A大小相同的上三角矩阵。该矩 阵的第k条对角线及以上元素取自A中相应元素,其余元 素都为零。命令triu(A,0)等同于命令triu( A )。 tril(A)——生成一个和A大小相同的下三角矩阵。该矩阵 的主对角线及以下元素取自A中相应元素,其余元素都为 零。 tril(A,k)——生成一个和A大小相同的下三角矩阵。该矩 阵的第k条对角线及以下元素取自A中相应元素,负数பைடு நூலகம்表 示主对角线下的对角线。其余元素都为零。命令 tril(A,0)等同于命令tril(A)
四、矩阵的生成
矩阵聚合是通过连接一个或多个矩阵来形成一个新的矩阵。 符号[]不仅是一个矩阵构造符,它还是一个Matlab聚合 运算符。表达式C=[A B]在水平方向上聚合矩阵A和B, 表达式C=[A;B]在垂向上聚合它们。 例如:A=ones(2,5)*6, %2*5的矩阵,元素为6. B=rand(3,5), %3*5的矩阵,元素为随机数 C=[A;B] %垂向聚合A和B (exno22)
>>a=zeros(4)
>>b=hilb(4) >>a(2,3)=b(2,3) >>a(:,2)=b(:,4) (exno25)
二、数组的生成
i:k 创建从i开始,步长为1,到k结束的数字序列,即 i,i+1,i+2,„,k。如果i>k,M atlab则返回一个空矩阵, 也就是[ ]。数字i和k不必是整数,该序列的最后一个数是 小于或等于k。 i:j:k 创建从i开始,步长为j,到k结束的数字序列,即 i,i+j,i+2j,„,k。如果j=0,则返回一个空矩阵。数字i、 j和k不必是整数,该序列的最后一个数是小于或等于k。
然后,保存为以exno1.m为文件名的文件。 在MATLAB命令窗口中输入文件名,得到下面结果。
一、矩阵的创建
>> exno1
Matrix =
12
23
34
25 43 23
27 45
47 65
46 45 45
21 344 566 423 45 21
67 855
一、矩阵的创建 4、导入数据创建矩阵 通过其他途径得到的数据(例如实验中测得的 数据)可以使用数据导入向导(Import Wizard)调入Matlab的工作空间。 Import Wizard工具随MATLAB一起安装,在 MATLAB的“Stare”菜单中可以找到。该工具 的使用比较简单,按照提示一步一步地进行操 作就能完成任务。
二、数组的生成
注:以上关于数组生成的命令经常用于作 图,如: x=linspace(0,pi); %生成数组 y=sin(x); %计算函数 plot(x,y); %作图
三、矩阵的裁剪 A(:,j) 返回矩阵A中第j列列向量。 A(i,:) 返回矩阵A中第i行行向量。 A(:,j:k) 返回由矩阵A中的第j列,第j+1列,直到第k列 列向量组成的子阵。 A(i:k,:) 返回由矩阵A中的第i行,第i+1行,直到第k行 行向量组成的子阵。 A(i:k,j:l) 返回由矩阵A中的第i行到第k行行向量和 第j列到第l列列向量组成的子阵。 A(:) 将矩阵A中的每列合并成一个长的列向量。 A(j:k) 返回一个行向量,其中的元素为A(:)中的从第j 个元素到第k个元素。
例如,要将work文件夹中的exno2.xls调入MATLAB中, 可以如下操作。
二、数组的生成
Matlab中的数组在外观上与矩阵毫无差别,也就是说矩阵的 输入方法可以直接移植到数组的输入上。同样,下述关于数 组的生成方法也可以用来生成矩阵。 X=[0 2 3 6 7 8]就构成了一个有6个元素的数组X。 除直接构造外,还有一些常用的构造方法,以下介绍两种: 1、用增量法构造数组 例3、A=10:15 B=-2.5:2.5 默认时,Matlab创建序列时增量总是1.即使最后的值不是 整数。 例4、A=1:6.3
四、矩阵的生成
diag(A)——生成一个由矩阵A主对角线元素组成的列向量。 主对角线总是从矩阵左上角开始。对于方阵来说它结束 于矩阵的右下角。 diag(x)——生成一个n维的方阵,它的主对角线元素值取 自向量x,其余元素的值都为0。 diag(A ,k)——生成一个由矩阵A第k条对角线的元素组成 的列向量。k=0为主对角线;k<0为下第k对角线;k>0为 上第k对角线。 diag(x ,k)——生成一个(n+abs(k))维的方阵,该矩阵的 第k条对角线元素取自向量x,其余元素都为零。
一、矩阵的创建
例3、编制一个名为exno1.m的M文件。 %exno1.m %创建一个M文件,用以输入大规模矩阵 Matrix=[12 23 34 25 27 47 46; 21 344 566 43 45 65 45; 423 45 21 23 67 855 45;
123 452 642 64 632 34 26]
一、矩阵的创建 2、通过函数创建数值矩阵
MATLAB提供了许多生成和操作矩阵的函数,可 以利用它们去建立矩阵。
例1:x=[0,pi/6,pi/3;pi/2,2*pi/3,5*pi/6]; >> y=sin(x) y= 0 0.5000 0.8660 1.0000 0.8660 0.5000 例2:reshape函数和diag函数等。 reshape函数用于建立数值矩阵。 diag函数用于产生对角阵。
可以用聚合的方法创建矩阵甚至更多维数组,但不能生成不 规则的形状,必须是矩形的。如果是水平生成矩阵,则每个 子矩阵必须具有相同的行数;如果是垂向生成矩阵,则每个 子矩阵必须具有相同的列数。
四、矩阵的生成
用repmat函数可以利用已有矩阵的多个拷贝来创建矩 阵。键入下面的命令行:
repmat(M,v,h)
四、矩阵的生成
fliplr(A)——将二维矩阵A左右翻转。这里的‘lr’是 ‘left - right’的缩写。 flipud(A)——将二维矩阵A上下翻转。这里的‘ud’是‘up - down’的缩写。 flipdim(A,n)——沿指定方向翻转矩阵。 注意:这里n=1或2,当=1相当flipud,当n=2相当fliplr. transpose(A) ——沿主对角线翻转矩阵。 ctranspose(A) ——转置矩阵。 rot90(A)——生成一个由矩阵A逆时针旋转90°而得的新阵。 rot90(A,k)——生成一个由矩阵A逆时针旋转k×90°而得到 的新阵。