MATLAB编程基础--元胞与结构数组及矩阵基本运算
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
disp([c{1,1}]),disp(’’)
8
元胞数组
元胞为任意类型、任何大小的多维数组,其定义需用大括号,元素间用逗号隔 开。
?a=[1,2;3,4]
a=
12
abcd
34
?b={1:4,a,’abcd’}
b=
[1x4 double] [2x2 double] ’abcd’
?cellplot(b)
9
元胞数组元素的引用采用大括号为下标标识,用小括号只显 示该元素的压缩形式。
?b{2} ans =
12 34 ?b(2) ans = [2x2 double]
10
结构数组
与元胞数组相似,结构数组也能在一个数组 中存放各类数据
结构数组的基本元素叫结构 结构的基本存储结构叫域 域与元素差别:元素是组成数组的基本单元,
19
除法
左除“\”: 相当于Ax=B的解,x=A-1B。 右除“/”:相当于xA=B的解,x=BA-1
A-1B=(B’A’-1)’。
通常,右除稍快一些,而左除可以避免奇异性。对于Ax
=B,其中A为(n×m)阶矩阵: ➢ n=m且非奇异时,方程为恰定方程; ➢ n>m 方程为超定方程; ➢ n<m 方程为欠定方程。
str2num([’1 2’;’3 4’]) (3)mat2str函数
?t=’1/(a*b-1)’;a=2;b=3;c=eval(t)
B_str=mat2str(B,4)
c=
Excute_str=[’10*’,B_str];
0.2000
2
执行字符串 x=(0:100)/100*pi; y=sin(x).*sin(9*x); plot(x,y) axis([0,pi,-1,1.5]) [y_max,i_max]=max(y); x_text=[’x=’,num2str(x(i_max))]; y_text=[’y=’,num2str(y_max)]; max_text=char(’maxinum’,x_text,y_text) hold on plot(x(i_max),y_max,’b.’, ’Markersize’,20); text(x(i_max)+0.03,y_max+0.2,max_text); hold off
第三讲
MATLAB编程基础
之 元胞与结构数组及矩阵基本运算 梁丙臣
1
1.串与数值的转换
(1)int2str
A=eye(3,4)
A_str=int2str(A)
ischar(A_str)
ans =
1
(2)num2str和str2num
数值与字符串互换函数,其中3为精度
B=rand(2,3)
B_str=num2str(B,3)
?f=a*e
f=
14 14 14 30 20 20 20 45 26 26 26 60
18
点积计算
指两个向量在其中一个向量方向上的投影的乘积。 dot(a,b) a,b必须同维。
?a=[1 2 3]; ?b=[3,4,5]; ?dot(a,b) ans =
26 ?sum(a.*b) ans =
26
6
元胞数组的创建与显示 1)直接赋值 a(1,1)={’It is a setup example’}; a(1,2)={[1 2 3;4 5 6]}; a(2,1)={[]}; a(2,2)={sym(’sin(t)’)};
输入a(1,2)与A{1,2}测试有什么不同? 2)先用cell函数进行预分配,在给元素赋值 只是创建一个指定大小的元胞数组,并且默认给元胞数组赋值为空 数组
A=diag(V) 随机矩阵:rand(m,n)产生一个m×n的均匀分别的随机
矩阵
15
其他特殊矩阵
compan 友矩阵函数 magic 魔方矩阵
hankel Hankel矩阵 rosser 对称特征值测试矩阵
hilb
Hilbert矩阵 pascal Pascal矩阵
invhilb 反Hilbert矩阵 vander 范德蒙矩阵
20
除法应用
x 4y 7z 12w 1 5x 7y 4z 2w 3 x 8z 5w 2 x 5y 2z 10w 6
A=[1,4,-7,-12;5,-7,4,2;1,0,8,-5;-1,5,-2,10] A = 3 4 -7 -12 5 -7 4 2 1 0 8 -5 -6 5 -2 10 >> B=[1;3;2;6] 1 3 2 6 >> X=A\B X= 1.7889 1.0534 0.2103 0.2942
3
2.串与ASCII码的转换 m_str=’Hello’; n_num=abs(m_str) char(n_num) %转换成字符串 setstr(n_num) %把ASCII转换成字符串
4
3.字符串英文大小写转换 m_str=’Hello’; upper_str=upper(m_str) lower_str=lower(m_str)
22
矩阵与常数的运算
常数与此矩阵的各元素之间进行运算。
注意:进行数除时,常数通常只能做除数。
矩阵的逆运算
函数 inv
?A=[2 1 -3 -1;3 1 0 7;-1 2 4 -2;1 0 -1 5]; ?inv(A)
ans =
-0.0471 0.3882 -0.2235 -0.0353
0.5882 -0.3529 0.2941 -0.0588
Nest_cell(1,1)={magic(5)}; Nest_cell(1,2)={{[5 2 8;7 3 0;6 7 3] ’Test 1’;[2-4i 5+7i]
{17 []}}}
7
利用元胞数组创建复杂字符串 c=[{’matlab7.0’},{’http://www.math ’};{’文宇工作室’}, {’matlab7.0编程基础’}];
5
4.字符串的比较 strcmp()和strncmp() str1=’hello’; str2=’helok’; strcmp(str1,str2) strncmp(str1,str2,3) 5.字符串的查询与置换 findstr strfind S=’Find the starting indices of the shorter string.’ findstr(s,’the’) findstr(’the’, s)
……
16
矩阵的基本运算
加减运算 要求两矩阵必须同阶。
?a=[1 2 3;2 3 4; 3 4 5]; ?b=[1 1 1;2 2 2;3 3 3]; ?c=a+b
c=
234 456 678
17
乘法
要求a为i×j阶, b为j×k阶时, ab才能相乘。
?e=[b,[5 5 5]’]
e=
1115 2225 3335
-0.2706 0.4824 -0.0353 0.0471
-0.9412 0.7647 -0.4706 0.2941
23
%寻访前三个元素组成的子数组
ans =
0.9501 0.2311 0.6068
x(3:end)
%寻访除前2个元素外的全部其他元素。end是最后一
%个元素的下标。
ans =
0.6068 0.4860 0.8913
14
常用的特殊矩阵
单位矩阵:eye(m,n); eye(m) 零 矩 阵:zeros(m,n); zeros(m) 一 矩 阵:ones(m,n); ones(m) 对角矩阵:对角元素向量 V=[a1,a2,…,an]
21
?A=[1 2 3;4 5 6;7 8 0;1 3 5]; ?B=[1 3 5;2 4 6]; ?A/B
?(B’\A’)’
ans 0 3.5000 -12.0000 10.2500 1.0000 0.0000
0 0.5000 -3.0000 3.5000 -12.0000 10.2500 1.0000 0.0000
13
x=rand(1,5)
%产生的均布随机数组
x=
0.9501 0.2311 0.6068 0.4860 0.8913
x(3)
%寻访数组x的第三个元素。
ans =
0.6068
x([1 2 5])
%寻访数组x的第一、二、五个元素组成的子数组。
ans =
0.9501 0.2311 0.8913
x(1:3)
而域是组成结构(结构数组元素)的基本单 元,元素>域
11
矩阵基本运算部分
12
矩阵
1 2 3 矩阵 A 4 5 6 的输入:
7 8 9
?A = [1,2,3; 4,5,6; 7,8,9]
A=
123 456 789
?a=[1 2 3 456 7 8 9]
a=
123 456 789
大型矩阵通借助M文件来输入。
8
元胞数组
元胞为任意类型、任何大小的多维数组,其定义需用大括号,元素间用逗号隔 开。
?a=[1,2;3,4]
a=
12
abcd
34
?b={1:4,a,’abcd’}
b=
[1x4 double] [2x2 double] ’abcd’
?cellplot(b)
9
元胞数组元素的引用采用大括号为下标标识,用小括号只显 示该元素的压缩形式。
?b{2} ans =
12 34 ?b(2) ans = [2x2 double]
10
结构数组
与元胞数组相似,结构数组也能在一个数组 中存放各类数据
结构数组的基本元素叫结构 结构的基本存储结构叫域 域与元素差别:元素是组成数组的基本单元,
19
除法
左除“\”: 相当于Ax=B的解,x=A-1B。 右除“/”:相当于xA=B的解,x=BA-1
A-1B=(B’A’-1)’。
通常,右除稍快一些,而左除可以避免奇异性。对于Ax
=B,其中A为(n×m)阶矩阵: ➢ n=m且非奇异时,方程为恰定方程; ➢ n>m 方程为超定方程; ➢ n<m 方程为欠定方程。
str2num([’1 2’;’3 4’]) (3)mat2str函数
?t=’1/(a*b-1)’;a=2;b=3;c=eval(t)
B_str=mat2str(B,4)
c=
Excute_str=[’10*’,B_str];
0.2000
2
执行字符串 x=(0:100)/100*pi; y=sin(x).*sin(9*x); plot(x,y) axis([0,pi,-1,1.5]) [y_max,i_max]=max(y); x_text=[’x=’,num2str(x(i_max))]; y_text=[’y=’,num2str(y_max)]; max_text=char(’maxinum’,x_text,y_text) hold on plot(x(i_max),y_max,’b.’, ’Markersize’,20); text(x(i_max)+0.03,y_max+0.2,max_text); hold off
第三讲
MATLAB编程基础
之 元胞与结构数组及矩阵基本运算 梁丙臣
1
1.串与数值的转换
(1)int2str
A=eye(3,4)
A_str=int2str(A)
ischar(A_str)
ans =
1
(2)num2str和str2num
数值与字符串互换函数,其中3为精度
B=rand(2,3)
B_str=num2str(B,3)
?f=a*e
f=
14 14 14 30 20 20 20 45 26 26 26 60
18
点积计算
指两个向量在其中一个向量方向上的投影的乘积。 dot(a,b) a,b必须同维。
?a=[1 2 3]; ?b=[3,4,5]; ?dot(a,b) ans =
26 ?sum(a.*b) ans =
26
6
元胞数组的创建与显示 1)直接赋值 a(1,1)={’It is a setup example’}; a(1,2)={[1 2 3;4 5 6]}; a(2,1)={[]}; a(2,2)={sym(’sin(t)’)};
输入a(1,2)与A{1,2}测试有什么不同? 2)先用cell函数进行预分配,在给元素赋值 只是创建一个指定大小的元胞数组,并且默认给元胞数组赋值为空 数组
A=diag(V) 随机矩阵:rand(m,n)产生一个m×n的均匀分别的随机
矩阵
15
其他特殊矩阵
compan 友矩阵函数 magic 魔方矩阵
hankel Hankel矩阵 rosser 对称特征值测试矩阵
hilb
Hilbert矩阵 pascal Pascal矩阵
invhilb 反Hilbert矩阵 vander 范德蒙矩阵
20
除法应用
x 4y 7z 12w 1 5x 7y 4z 2w 3 x 8z 5w 2 x 5y 2z 10w 6
A=[1,4,-7,-12;5,-7,4,2;1,0,8,-5;-1,5,-2,10] A = 3 4 -7 -12 5 -7 4 2 1 0 8 -5 -6 5 -2 10 >> B=[1;3;2;6] 1 3 2 6 >> X=A\B X= 1.7889 1.0534 0.2103 0.2942
3
2.串与ASCII码的转换 m_str=’Hello’; n_num=abs(m_str) char(n_num) %转换成字符串 setstr(n_num) %把ASCII转换成字符串
4
3.字符串英文大小写转换 m_str=’Hello’; upper_str=upper(m_str) lower_str=lower(m_str)
22
矩阵与常数的运算
常数与此矩阵的各元素之间进行运算。
注意:进行数除时,常数通常只能做除数。
矩阵的逆运算
函数 inv
?A=[2 1 -3 -1;3 1 0 7;-1 2 4 -2;1 0 -1 5]; ?inv(A)
ans =
-0.0471 0.3882 -0.2235 -0.0353
0.5882 -0.3529 0.2941 -0.0588
Nest_cell(1,1)={magic(5)}; Nest_cell(1,2)={{[5 2 8;7 3 0;6 7 3] ’Test 1’;[2-4i 5+7i]
{17 []}}}
7
利用元胞数组创建复杂字符串 c=[{’matlab7.0’},{’http://www.math ’};{’文宇工作室’}, {’matlab7.0编程基础’}];
5
4.字符串的比较 strcmp()和strncmp() str1=’hello’; str2=’helok’; strcmp(str1,str2) strncmp(str1,str2,3) 5.字符串的查询与置换 findstr strfind S=’Find the starting indices of the shorter string.’ findstr(s,’the’) findstr(’the’, s)
……
16
矩阵的基本运算
加减运算 要求两矩阵必须同阶。
?a=[1 2 3;2 3 4; 3 4 5]; ?b=[1 1 1;2 2 2;3 3 3]; ?c=a+b
c=
234 456 678
17
乘法
要求a为i×j阶, b为j×k阶时, ab才能相乘。
?e=[b,[5 5 5]’]
e=
1115 2225 3335
-0.2706 0.4824 -0.0353 0.0471
-0.9412 0.7647 -0.4706 0.2941
23
%寻访前三个元素组成的子数组
ans =
0.9501 0.2311 0.6068
x(3:end)
%寻访除前2个元素外的全部其他元素。end是最后一
%个元素的下标。
ans =
0.6068 0.4860 0.8913
14
常用的特殊矩阵
单位矩阵:eye(m,n); eye(m) 零 矩 阵:zeros(m,n); zeros(m) 一 矩 阵:ones(m,n); ones(m) 对角矩阵:对角元素向量 V=[a1,a2,…,an]
21
?A=[1 2 3;4 5 6;7 8 0;1 3 5]; ?B=[1 3 5;2 4 6]; ?A/B
?(B’\A’)’
ans 0 3.5000 -12.0000 10.2500 1.0000 0.0000
0 0.5000 -3.0000 3.5000 -12.0000 10.2500 1.0000 0.0000
13
x=rand(1,5)
%产生的均布随机数组
x=
0.9501 0.2311 0.6068 0.4860 0.8913
x(3)
%寻访数组x的第三个元素。
ans =
0.6068
x([1 2 5])
%寻访数组x的第一、二、五个元素组成的子数组。
ans =
0.9501 0.2311 0.8913
x(1:3)
而域是组成结构(结构数组元素)的基本单 元,元素>域
11
矩阵基本运算部分
12
矩阵
1 2 3 矩阵 A 4 5 6 的输入:
7 8 9
?A = [1,2,3; 4,5,6; 7,8,9]
A=
123 456 789
?a=[1 2 3 456 7 8 9]
a=
123 456 789
大型矩阵通借助M文件来输入。