数学软件MATLAB实验报告 实验二.docx
- 文档编号:3590388
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:19
- 大小:178.34KB
数学软件MATLAB实验报告 实验二.docx
《数学软件MATLAB实验报告 实验二.docx》由会员分享,可在线阅读,更多相关《数学软件MATLAB实验报告 实验二.docx(19页珍藏版)》请在冰豆网上搜索。
数学软件MATLAB实验报告实验二
实验二:
数学软件MATLAB的数据类型
实验目的与要求:
掌握MATLAB的数组、矩阵、字符串、多维数组、结构数组、单元数组和函数句柄等数据类型。
实验内容:
1.常数
在命令窗口中分别键入:
Rho=(sqrt(5)-1)/2
A=abs(3+4i)
realmax
huge=exp(log(realmax))
toobig=pi*huge
观察执行结果。
2.变量
函数iskeyword的功能是:
判断输入参数是否是matlab中的关键字
在命令窗口中键入命令iskeyword并记录结果。
3.输出格式
练习使用format命令设置变量的输出格式。
format:
以5位定点格式输出变量值。
formatshorte:
以5位浮点格式输出变量值。
formatshortg:
以5位定点与5位浮点中选择最好的格式表示。
formatlong:
以15位定点格式输出double型变量值。
formatlonge:
以15位浮点格式输出double型变量值。
formathex:
以16进制输出变量值。
format+:
在矩阵中,用符号+、-和空格分别表示正号、符号和零。
formatcompact:
变量之间没有空行。
formatloose:
变量之间有空行。
4.练习在MATLAB中构造一位数组的方法。
(1)用空格或逗号间隔一维数组元素,然后用方括号括起来即可构建一维数组(行向量)。
(2)利用MATLAB提供的冒号运算符(first:
step:
last)格式可以生成一维数组(行向量)。
Step=1时可以省略,即为(first:
step)格式
5.练习在MATLAB中构造二维数组(矩阵)的方法。
6.练习在MATLAB中如何获取矩阵的元素。
演示:
A=magic(4)%生成一个4阶幻方阵
A=
162313
511108
97612
414151
b1=A(4,3)
b1=
15
b2=A(12)
b2=
15
b3=A(1,end)
b3=
13
b4=A(end)
b4=
1
b5=A(end,3)
b5=
15
Linearindex=sub2ind(size(A),4,2)%获取线性索引值
Linearindex=
8
[row,col]=ind2sub(size(A),12)%获取行列索引值
row=
4
col=
3
B1=A(2,:
)
B1=
511108
B2=A(:
3)
B2=
3
10
6
15
B3=A(:
)
B3=
16
5
9
4
2
11
7
14
3
10
6
15
13
8
12
1
C1=A(2:
4,:
)
C1=
511108
97612
414151
C2=A(2:
4,[124])
C2=
5118
9712
4141
7.练习在MATLAB中如何获取与矩阵有关的信息。
8.练习在MATLAB中如何创建字符串。
A='China';
whosA
NameSizeBytesClass
A1x510chararray
可见,A是一个1行5列的字符数组。
class(A)%测试A的数据类型
ans=
char
ischar(A)%测试A是否为字符串数据类型
ans=
1
9.练习在MATLAB中如何创建二维字符串。
10.练习在MATLAB中数据类型的转换。
11.比较字符串
在命令窗口中键入:
str1=‘hello’;
str2=‘help’;
strcmp(str1,str2)
解释运行结果:
因为str1和str2不相等,所以调用strcmp函数时返回0(false)。
在命令窗口中键入:
Strcmp(str1,str2,3)
运行结果
解释运行结果:
因为str1和str2前三个字母相等,所以调用strcmp函数时返回1(true)。
在命令窗口中键入:
strcmp(str1,str2,4)
运行结果:
解释运行结果:
因为str1和str2前四个字母不相等,所以调用strcmp函数时返回0(false)。
在命令窗口中键入:
A={‘hello’;’pen’;’rule’};
B={‘help’;‘pen’;‘pencilbox’};
Strncmp(A,B)
运行结果:
解释运行结果:
A和B的第一组元素hello和help不相等,所以调用strcmp函数时返回0(false);其第二组元素都是pen,相等,所以调用strcmp函数时返回1(true);A和B的第三组元素rule和pencilbox不相等,所以调用strcmp函数时返回0(false)。
在命令窗口中键入:
Strncmp(A,B,3)
运行结果:
解释运行结果:
12.练习使用MATLAB的关系运算符(>,>=,<=,==,~=)比较字符串.
A='face';B='cake';
A==B
ans=
0101
A>=B
ans=
1101
A>B
ans=
1000
13.练习聚合字符串。
演示1
forn=1:
6
A{n}=['a',int2str(n)];
end
A
A=
'a1''a2''a3''a4''a5''a6'
演示2:
form=1:
8
B{m}=sprintf('B%d',m);
end
B
B=
'B1''B2''B3''B4''B5''B6''B7''B8'
演示3:
i=2;j=5;k=8;
A=sprintf('i=%d,j=%d,k=%d.',i,j,k)
A=
i=2,j=5,k=8.
●用strcat函数也可以把两个或更多字符串合在一起。
演示:
m=2010;A1='China';A2='XuZhou';
C=strcat(A1,',',A2,',',int2str(m))
C=
China,XuZhou,2010
14.练习在MATLAB中如何生成多维数组。
用索引生成多维数组
创建多维数组的方法之一是先创建一个二维数组,然后扩展它。
演示:
A=[123;456;789];A(:
:
2)=[104;356;987];A(:
:
3)=8;
A
A(:
:
1)=
123
456
789
A(:
:
2)=
104
356
987
A(:
:
3)=
888
888
888
这就得到了一个3维数组A,再把A扩展成一个
的4维数组:
A(:
:
1,2)=[123;123;123];
A(:
:
2,2)=[987;654;321];
A(:
:
3,2)=[101;010;011];
用MATLAB函数生成多维数组
●用randn,ones和zeros函数等生成多维数组。
演示:
A=randn(4,3,2)%创建一个标准正态分布随机数
的3维数组。
●用repmat函数生成一个元素均为同一常数的数组。
演示:
B=repmat(8,[342])
用cat函数生成多维数组
cat函数是创建多维数组的一种简单方式,它按指定的维数将多个数组聚合在一起,其调用格式为:
B=cat(dim,A1,A2,…)
其中A1,A2等是进行聚合的数组,dim是维数。
演示:
A=cat(3,[12;34],[13;57])
A(:
:
1)=
12
34
A(:
:
2)=
13
57
B=cat(3,[56;78],[24;68]);
D=cat(4,A,B,cat(3,[19;91],[18;81]))
15.练习在MATLAB中如何创建结构数组。
⒈使用赋值语句
可以通过将数据赋给单独的字段来生成一个简单的
结构数组。
演示:
student.name='WangMeng';
student.ID=08;
student.test=[79757380;88898095]
student=
name:
'WangMeng'
ID:
8
test:
[2x4double]
student是一个包含有3个字段的结构数组。
要扩展该结构数组,在结构名后面添加索引号即可。
演示:
student
(2).name='ZhangLei';
student
(2).ID=10;
student
(2).test=[687768;696571;826198]
student=
1x2structarraywithfields:
name
ID
test
注1:
一旦结构数组包含一个以上的元素,键入数组名时MATLAB就不显示单独的字段内容,而是显示结构包含的信息类别的一个综述列表。
注2:
不要求数组中每个元素的字段大小相同。
在student结构中,test字段可以是大小任意的数组。
⒉使用struct函数
可以用struct函数预分配一个结构数组。
其基本形式为:
str_array=struct('field1',val1,'field2',val2,…)
演示:
A=struct('type',{'big','little'},'color','red','x',{34})
A=
1x2structarraywithfields:
type
color
x
16.练习在结构数组中如何获取数据。
演示:
A1=[79757380;88898095];
A2=[687768;696571;826198];
student=struct('name',{'WangMeng','ZhangLei'},'ID',{8,10},'test',{A1,A2})
student=
1x2structarraywithfields:
name
ID
test
B=student
(1).name
B=
WangMeng
c=student
(2).ID
c=
10
D=student
(2).test
D=
687768
696571
826198
E1={student.name}
E1=
'WangMeng''ZhangLei'
E2=[student.ID]
E2=
810
E3={student(1:
2).test}
E3=
[2x4double][3x3double]
f=student
(2).test(:
[2,3])
f=
7768
6571
6198
17.练习使用size函数获取结构数组或任何结构字段的大小。
A=[12;34;56]
size(A)
A=
12
34
56
18.练习在MATLAB中如何创建单元数组
⑴单元索引:
按标准数组方式把单元索引号放到小括号中间,把单元的内容放在赋值语句的右端,用大括号括起来。
A={};
A(1,1)={[123;456;789]};
A(1,2)={'Liuzhong'};
A(2,1)={3+7i};
A(2,2)={-pi:
pi/10:
pi};
A
A=
[3x3double]'Liuzhong'
[3.0000+7.0000i][1x21double]
⑵内容索引:
以标准数组标注方式把单元索引号以大括号括起来放在左侧,在赋值语句的右侧指定单元内容。
A={};
A{1,1}=[123;456;789];
A{1,2}='Liuzhong';
A{2,1}=3+7i;
A{2,2}=-pi:
pi/10:
pi;
A
A=
[3x3double]'Liuzhong'
[3.0000+7.0000i][1x21double]
19.练习在MATLAB中如何从单元数组中获取数据
●用内容索引获取单元内容
演示:
B=A{1,2}
B=
Liuzhong
whosB
NameSizeBytesClass
B1x918chararray
●用单元索引获取单元子集
演示:
C=A(1,2)
C=
'Liuzhong'
whosC
NameSizeBytesClass
C1x178cellarray
20.练习在MATLAB中如何删除单元和重塑单元数组
演示:
A={};
A{1,1}=[123;456;789];
A{1,2}='Liuzhong';
A{2,1}=3+7i;
A{2,2}=-pi:
pi/10:
pi;
A
A=
[3x3double]'Liuzhong'
[3.0000+7.0000i][1x21double]
A
(2)=[]%删除单元
A=
[3x3double]'Liuzhong'[1x21double]
与其它数组一样,可用reshape函数重塑单元数组。
单元个数必须与重塑以后的相同,不能使用reshape函数添加或删除单元。
演示:
A=cell(3,4);
size(A)
ans=
34
B=reshape(A,6,2);
size(B)
ans=
62
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学软件MATLAB实验报告 实验二 数学 软件 MATLAB 实验 报告