MATLAB矩阵Word文件下载.docx
- 文档编号:21056990
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:49
- 大小:205.25KB
MATLAB矩阵Word文件下载.docx
《MATLAB矩阵Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB矩阵Word文件下载.docx(49页珍藏版)》请在冰豆网上搜索。
0
1.2建立其他数值类型数据的方法
●使用single、int_、uint_分别建立单精度、有符号整型、无符号整型的数据
b=single(a)%建立单精度变量b
b=
whosab%查看变量ab的详细信息
b1x14singlearray
Grandtotalis2elementsusing12bytes
class(b)%获取变量b的数据类型
single
isa(b,'
single'
c=int8(a)%尝试把变量a的值改为3.8,看结果有何变化,得出什么结论?
c=
3
class(c)%获取变量c的数据类型
int8
isa(c,'
int8'
结论:
a的值改为3.8后变量c的值变为4,说明在MATLAB中将一个浮点型数据转换为整型数据是遵循“四舍五入”的法则
2、数值
●需了解MATLAB表达方式的组成、类型
●了解数组(array)、矩阵(matrix)、向量(vector)、标量(数字)(scalar)的概念和它们之间的关系。
●标量和向量是矩阵的特例,而矩阵是数组的特例。
●复数(complex)和复数矩阵——实数矩阵是复数矩阵的特例,虚部为0
MATLAB把复数作为一个整体处理,虚数单位用自定义变量i或j表示。
(1)复数标量
z=3.4+34i
z=
3.4000+34.0000i
z=3.4+34j
z=3.4+i34
?
Undefinedfunctionorvariable'
i34'
.
z=3.4+j34
j34'
z=3.4+i*34
z=3.4+j*34
在创建复数(complex)和复数矩阵时,若虚部为常数,放在系统自定义变量i或j之前可省略星号(*),但若放在其后则不能省略
a=3.4;
b=9;
r=a+bi
bi'
r=a+bj
Usage:
M=bj(Data,Orders);
M=bj(Data,Orders,Prop/Valuepairs).
r=
[]
r=a+jb
jb'
r=a+i*b
3.4000+9.0000i
r=complex(a,b)
在创建复数(complex)和复数矩阵时,若虚部为变量,则与系统自定义变量i或j之间必须加星号(*),无论其在前还是在后。
另:
complex(a,b)可将实数矩阵a,b构成复数矩阵a+b*i.
(2)复数矩阵——矩阵元素是复数
方法:
1)直接输入法
在MATLAB环境下,用下面三条指令创建复数矩阵C。
a=2.7358;
b=33/79;
C=[1,2*a+i*b,b*sqrt(a);
sin(pi/4),a+5*b,3.5+i]
C=
1.00005.4716+0.4177i0.6909
0.70714.82443.5000+1.0000i
whosC
C2x396doublearray(complex)
Grandtotalis6elementsusing96bytes
!
注意:
复数矩阵单个元素所占的字节数为16,而实数矩阵单个元素所占的字节数为8
2)由实部和虚部间接创建
复数数组的另一种输入方式。
M_r=[1,2,3;
4,5,6]
M_r=
123
456
M_i=[11,12,13;
14,15,16]
M_i=
111213
141516
则复数矩阵可由下面两种方式创建,必须保证上面两个矩阵大小是相同的
CN1=M_r+i*M_i
CN1=
1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i
4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i
CN2=complex(M_r,M_i)
CN2=
(3)MATLAB提供的复数和复数矩阵操作函数
复数
直角坐标表示和极坐标表示之间转换的MATLAB指令如下:
real(z)z的实部a=rcosθ
imag(z)z的虚部b=rsinθ
abs(z)z的模r=√(a2+b2)
angle(z)z的相角θ=arctg(b/a)
求其共轭的函数为:
conj(z)z的共轭a-bi
如果z是复数矩阵,则上述函数是对矩阵里的每个元素做同样的操作。
二、MATLAB矩阵(二维数组)的创建——共6种方法
1、直接输入矩阵元素法
对于一般较小的简单的矩阵,用户可以从键盘上直接输入一系列的元素生成矩阵。
规则:
⏹
矩阵元素必须用[]括住
⏹矩阵元素必须用逗号或空格分隔
⏹在[]内矩阵的行与行之间必须用分号(;
)或Enter键分隔
在MATLAB中创建矩阵
矩阵元素可以是任何matlab表达式,可以是实数,也可以是复数
实现方法如下:
A=[123;
456]
A=[1,2,3;
4,5,6]
A=[123
练习:
在MATLAB中创建矩阵
总结:
如何获取一个已建立矩阵的信息?
调用MATLAB提供的函数——class(),size(),length(),ndims()
class(A)%类型
size(A)%大小
23
length(A)%长度
ndims(A)%维数
2
2、利用冒号表达式建立一个向量
冒号表达式可以产生一个行向量,一般格式是:
其中e1为初始值,e2为步长缺省为1,e3为终止值。
该方法产生的行向量的最后一个元素的值小于等于e3,并不一定是e3
例如:
1:
6:
5
在MATLAB中,还可以用linspace函数产生行向量。
其调用格式为:
linspace(a,b,n)
其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
显然,linspace(a,b,n)与a:
(b-a)/(n-1):
b等价。
要求在闭区间[0,2π]上产生50个等距采样的一维数组。
试用两种不同的指令实现。
法一:
linspace函数linspace(0,2*pi,50);
法二:
冒号表达式:
0:
2*pi/(50-1):
2*pi;
3、用matlab函数创建矩阵
系统中提供了多个命令用于输入特殊的矩阵:
函数
功能
compan
伴随阵
toeplitz
Toeplitz矩阵
diag
对角阵
vander
Vandermonde矩阵
hadamard
Hadamard矩阵
zeros
元素全为0的矩阵
hankel
Hankel矩阵
ones
元素全为1的矩阵
invhilb
Hilbert矩阵的逆阵
rand
元素服从均匀分布的随机矩阵
kron
Kronercker张量积
randn
元素服从正态分布的随机矩阵
magic
魔方矩阵
eye
对角线上元素为1的矩阵
pascal
Pascal矩阵
meshgrid
由两个向量生成的矩阵
上面函数的具体用法,可以用帮助命令help得到。
如:
eye、zeros、ones、rand这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。
其调用格式是:
●zeros(m)产生m×
m零矩阵
●zeros(m,n)产生m×
n零矩阵。
●zeros(size(A))产生与矩阵A同样大小的零矩阵
zeros
(2)%产生2×
2零矩阵
00
00
zeros(2,3)%产生2×
3零矩阵
000
000
A=2:
A=
2345
zeros(size(A))%产生与矩阵A同样大小的零矩阵
0000
4、利用M文件建立矩阵
创建和保存数组AM的MyMatrix.m文件。
%MyMatrix.mCreationandpreservationofmatrixAM
AM=[101,102,103,104,105,106,107,108,109;
...
201,202,203,204,205,206,207,208,209;
301,302,303,304,305,306,307,308,309];
以后创建矩阵AM只需要运行:
MyMatrix指令即可。
5、把外部数据调入矩阵法
(1)选择File——>
ImportData菜单操作,可打开任意类型的数据文件
(2)用户能够通过load命令,将MATLAB外部数据文件中的内容调入到工作空间中创建矩阵,外部数据文件的扩展名为“.mat“
6、建立大矩阵
大矩阵可由方括号中的小矩阵建立起来。
例如
A=[123;
456;
789]
456
789
C=[A,eye(size(A));
ones(size(A)),A]
123100
456010
789001
111123
111456
111789
即矩阵的元素可以是矩阵,但必须保证同行的矩阵行数相同,同列的矩阵列数相同。
三、矩阵(二维数组)元素的标识
1、“全下标”标识(row-columnsubscripts)
“全下标”标识法:
即指出是“第几行,第几列”的元素。
对于二维数组(矩阵)来说,“全下标”标识由两个下标组成:
行下标,列下标。
格式:
矩阵名(m,n)
2、“单下标”标识(linearindexing)
“单下标(LinearIndex)”标识:
就是“只用一个下标来指明元素在数组中的位置”。
“一维编号”:
先设想把二维数组的所有列,按先左后右的次序、首尾相接排成“一维长列”;
然后,自上往下对元素位置进行编号。
¢
“单下标”与“全下标”的转换关系:
●
函数调用格式:
[I,J]=ind2sub(siz,IND)
IND=sub2ind(siz,I,J)
以(m×
n)的二维数组A为例,若“全下标”元素位置是“第i行,第j列”,那么相应的“单下标”为l=(j-1)×
m+i。
MATLAB有两个指令可实现以上表示方法间的转换:
●sub2ind据全下标换算出单下标。
●ind2sub据单下标换算出全下标
在MATLAB中创建下列矩阵,并取出方框内的数组元素
A=[2.3-41;
592;
62.53]%直接输入法创建矩阵
2.3000-4.00001.0000
5.00009.00002.0000
6.00002.50003.0000
A(1,1)%全下标访问2.3
2.3000
A
(1)%单下标访问2.3
2.3000
A(3,1)%全下标访问6
6
A(3)%单下标访问6
A(2,2)%全下标访问9
9
A(5)%单下标访问9
A(1,3)%全下标访问1
A(7)%单下标访问1
将全下标(3,1)转换为单下标
sub2ind(size(A),3,1)
将单下标7转换为全下标
[m,n]=ind2sub(size(A),7)
m=
1
n=
3、“逻辑1”标识(logicalIndexing)
所谓“逻辑1”标识法是:
通过与A同样大小的逻辑数组L中“逻辑值1”所在的位置,指出A中元素的位置。
例1:
找出数组
中所有绝对值大于3的元素。
A=zeros(2,5);
%预生成一个(2*5)全零数组
A(:
)=-4:
5%运用“全元素”赋值法获得A
-4-2024
-3-1135
L=abs(A)>
3%产生与A同维的“0-1”逻辑值数组
L=
10001
00001
islogical(L)%判断L是否逻辑值数组。
输出若为1,则是。
X=A(L)%把L中逻辑值1对应的A元素取出
X=
-4
4
5
演示逻辑数组与一般双精度数值数组的关系和区别。
(本例在上例基础上进行)。
(1)逻辑数组与双精度数组的相同之处
Num=[1,0,0,0,1;
0,0,0,0,1];
%产生与L数组外表完全相同的“双精度数组”
N_L=Num==L%假如Num与L数值相等,则应得1。
N_L=
11111
11111
c_N=class(Num)%用class指令检查Num的类属
c_N=
c_L=class(L)%用class指令检查L的类属
c_L=
logical
whosNumL
NameSizeBytesClass
L2x510logicalarray
Num2x580doublearray
Grandtotalis20elementsusing90bytes
(2)逻辑数组与一般双精度数组的差别
islogical(Num)%检查Num是否属于逻辑数组类
Y=A(Num)%试探Num能否象L一样具有标识作用
Subscriptindicesmusteitherberealpositiveintegersorlogicals.
(2)逻辑数组的另外一种创建方法——logical()函数
LN=logical(Num)%将双精度数值数组转换为逻辑数组
LN=
islogical(LN)%检查LN是否属于逻辑数组类
Z=A(LN)%试探LN能否象L一样具有标识作用
Z=
总结
1、逻辑数组的元素或是0或是1,但是元素或是0或是1的矩阵并不一定是逻辑矩阵。
是一种特殊的数据类型。
2、逻辑数组具有标识作用,但是元素或是0或是1的数值矩阵不具有标识作用
3、逻辑数组只能通过logical()函数或逻辑、关系运算这两种方式获得。
4、可用class、islogical两个函数来判断一个数组是否逻辑数组。
l=find(A>
=60)%返回的是A中元素值大于等于60的元素的单下标号
A(l)%单下标访问
单下标和全下标之间的相互转换
[mn]=ind2sub(size(A),l)
S=[mn]
sub2ind(size(A),m,n)
四、子矩阵的寻访和赋值
子矩阵寻访
子矩阵的赋值——实现对矩阵的修改
全下标
要修改已经定义矩阵A 语法:
A(m,n)=B
注:
●m,n可以是向量或标量
●A(:
:
)=B——全元素赋值
●要求A(m,n)、B两矩阵的大小必须是相同的,即B大小必须是length(m)行,length(n)列
单下标
要修改已定义矩阵A 语法:
A(l)=B
⏹l可以是一个矩阵、向量或标量
⏹A(:
⏹要求A(s)、B两矩阵的元素个数必须是相同的,B可以是一个矩阵、向量或标量
子数组寻访和赋值格式汇总表
子数组寻访和赋值
使用说明
A(r,c)
它由A的“r指定行”和“c指定列”上的元素组成
A(r,:
)
它由A的“r指定行”和“全部列”上的元素组成
c)
它由A的“全部行”和“c指定列”上的元素组成
“全元素”寻访。
它由A的各列按自左到右的次序,首尾相接而生成“一维长列”数组
A(s)
“单下标”寻访。
生成“s指定的”一维数组。
S若是“行数组”(或“列数组”),则A(s)就是长度相同的“行数组”(或“列数组”)
A(L)
“逻辑1”寻访。
生成“一维”列数组:
由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素;
按“单下标”次序排成长列组成。
A(r,c)=Sa
以“双下标”方式,对子数组A(r,c)进行赋值;
Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同
)=D(:
全元素赋值方式。
结果:
保持A的“行宽、列长”不变。
条件:
A、D两个数组的总元素相等,但“行宽、列长”不一定相同
A(s)=Sa
按“单下标”方式,对A的部分元素重新赋值。
s单下标数组的长度必须与“一维数组”Sa的长度相等,但是s、Sa不一定同是“行数组”或“列数组”
不同寻访和赋值方式示例。
在MATLAB中创建下面的矩阵
clear
a=1:
8
12345678
A=[a;
a;
a]
12345678
1)如何获取矩阵的第3行;
A(3,:
2)如何获取矩阵的第4列;
4)
4
3)如何获取矩阵的第2到6行,3到7列;
A(2:
6,3:
7)
34567
34567
4)如何获取矩阵的第1、2、7、8行,2、5、7列;
A([1278],[257])
257
257
5)如何实现矩阵第1列和第4列数据的交换;
[42315:
8])
42315678
42315678
6)如何获取矩阵按列的倒序排列矩阵
end:
-1:
1)
87654321
87654321
7)如何获取矩阵单下标号为奇数的元素
A(1:
2:
64)
Columns1through23
11112222333344445555666
Columns24through32
677778
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 矩阵