实验1 Matlab基础实验资料.docx
《实验1 Matlab基础实验资料.docx》由会员分享,可在线阅读,更多相关《实验1 Matlab基础实验资料.docx(16页珍藏版)》请在冰豆网上搜索。
实验1Matlab基础实验资料
实验1Matlab基础实验
成绩
专业班级数学131学号2013120101姓名报告日期3月31日.
实验类型:
●验证性实验○综合性实验○设计性实验
实验目的:
熟悉MATLAB系统的启动、退出、演示系统、帮助系统、
MATLAB的运行环境,掌握Matlab矩阵、算符、表达式、数据结构、数据类型、函数与程序设计及其运行、画图等的基础知识。
实验内容:
MATLAB系统的启动、退出、演示系统、帮助系统,Matlab中Notebook的应用,矩阵的建立、矩阵的拆分、特殊矩阵、矩阵算符及其表达式表示和计算,矩阵求逆,求行列式的值,矩阵特征值与特征向量计算,结构体、元胞数组,常用数学函数、画图函数应用,字符串与数值的转换,数据类型的转换。
编写求三位整数中是水仙花数的程序,所谓水仙花数是指一个3位数,其各位数字的立方之和等于该数本身,例如153是一个水仙花数,13+53+33=153。
编写求三位整数中是完数的程序,一个数如果恰好等于它的因子之和,这个数就称为完数。
实验报告:
1、MATLAB系统的启动、退出、演示系统、帮助系统
启动:
(1)使用Windows“开始”菜单。
(2)利用快捷方式。
点击桌面图标启动
退出:
(1)在MATLAB命令窗口输入Exit或Quit命令。
(2)单击MATLAB主窗口的“关闭”按钮。
演示系统:
在帮助窗口中选择演示系统(Demos)选项卡,然后在其中选择相应的演示模块,或者在命令窗口输入Demos,或者选择主窗口Help菜单中的Demos子菜单,打开演示系统。
帮助系统:
单击MATLAB主窗口工具栏中的help按钮;
在命令窗口中输入“help”命令
2、Matlab中Notebook的应用
用Matlab解决问题时,通常使用Matlab编辑器编写M文件,运用M文件中的程序得到结果。
如果要把程序与结果用文字处理软件用Word进行保存,就必须利用复制与粘贴功能在Matlab与Word之间进行,但程序在Word中不能运行。
Matlab中的Notebook软件工具可以满足用中文Word编写、运行Matlab程序与中文文件名,实现Matlab与中文Word的无缝链接。
3、矩阵的建立、矩阵的拆分、特殊矩阵、矩阵算符及其表达式表示和计算
矩阵的建立
1.直接输入法
从键盘直接输入矩阵的元素。
具体方法如下:
将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
>>A=[123;456;789]
A=
123
456
789
2.利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。
下面通过一个简单例子来说明如何利用M文件创建矩阵。
矩阵的拆分
>>B=magic(5)
B=
17241815
23571416
46132022
101219213
11182529
>>B(end,:
);
>>B([1,4],3:
end)
ans=
1815
19213
特殊矩阵
魔方矩阵
>>B=magic(5)
B=
17241815
23571416
46132022
101219213
11182529
范得蒙矩阵
C=vander([1;2;3;5])
C=
1111
8421
27931
1252551
希尔伯特矩阵
D=hilb(3)
D=
1.00000.50000.3333
0.50000.33330.2500
0.33330.25000.2000
帕斯卡矩阵
E=pascal(4)
E=
1111
1234
13610
141020
矩阵运算符及其表达式表示和计算
算术运算符:
+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)
>>x=[213;235];
>>y=x-1
y=
102
124
>>y=y+x
y=
315
359
>>y=x*4
y=
8412
81220
>>y=x\y
y=
000
-4.00004.0000-0.0000
4.0000-0.00004.0000
>>y=y/x
y=
00
-5.00003.0000
3.0000-1.0000
>>y=A^3
y=
468576684
106213051548
165620342412
关系运算符:
<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)
>>a=A>1
a=
011
111
111
>>b=A>=1
b=
111
111
111
>>c=A==1
c=
100
000
000
>>d=A~=1
d=
011
111
111
逻辑运算符:
&(与)、|(或)和~(非)
>>A=[1210]
A=
1210
>>B=[1323]
B=
1323
>>A&B
ans=
1110
>>A|B
ans=
1111
>>~A
ans=
0001
在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。
4、矩阵求逆
>>B=magic(5)
B=
17241815
23571416
46132022
101219213
11182529
>>inv(B)
ans=
-0.00490.0512-0.03540.00120.0034
0.0431-0.0373-0.00460.01270.0015
-0.03030.00310.00310.00310.0364
0.0047-0.00650.01080.0435-0.0370
0.00280.00500.0415-0.04500.0111
5、求行列式的值
>>A=[123;456;789]
A=
123
456
789
>>det(A)
ans=
0
6、矩阵特征值与特征向量计算
>>F=eig(A)
F=
16.1168
-1.1168
-0.0000
>>[V,D]=eig(A)
V=
-0.2320-0.78580.4082
-0.5253-0.0868-0.8165
-0.81870.61230.4082
D=
16.116800
0-1.11680
00-0.0000
7、结构体、元胞数组
结构体
1)直接创建:
>>student.name='Tom';
>>student.age=20;
>>student.sex='male';
>>student
student=
name:
'Tom'
age:
20
sex:
'male'
要创建时加上下标就行了
>>student
(1).name='Tom';
student
(1).age=20;
student
(1).sex='male';
>>student
(2).name='rose';
student
(2).age=21;
student
(2).sex='female';
>>student
student=
1x2structarraywithfields:
name
age
sex
>>student
(1)
ans=
name:
'Tom'
age:
20
sex:
'male'
>>student
(2)
ans=
name:
'rose'
age:
21
sex:
'female'
2)用关键字struct创建
>>student=struct('name',{'Tom','rose'},'age',{20,21});
>>student
student=
1x2structarraywithfields:
name
age
>>student
(1)
ans=
name:
'Tom'
age:
20
>>student
(2)
ans=
name:
'rose'
age:
21
3)要增加字段怎么办?
直接在结构体名后加.字段名
student
(1).id=100;
4)要删除字段呢?
使用函数rmfield(,)
student=rmfield(student,'id');
5)几个函数
fieldnames(student);%返回字段名
isfield(student,'age');
isstruct(student);
struct2cell(student);
元胞数组
它与数组的区别是:
每个元素可以是不同类型的,可是不同大小的矩阵,也可以是字符串,结构体等
使用元胞数组要区分(),{}的区别。
1)创建元胞数组
>>c(1,1)={[1,2;34]};
>>c(1,2)={'tomisasb'};
>>c(2,1)={[1,2,3,4,5,6]};
>>c(2,2)={struct('name','rose','age',21)};
>>c
c=
[2x2double]'tomisasb'
[1x6double][1x1struct]
>>c(1,1)
ans=
[2x2double]
>>c{1,1}
ans=
12
34
>>
{}:
可以返回一个元胞中的具体数据;
():
返回该位置的数组类型信息
>>B(3,3)={'hello'};
>>B
B=
[][][]
[][][]
[][]'hello'
>>
创建一个3*3的元胞数组,并组在(3,3)位置的赋值
2)几个函数
celldisp(c);%显示
cell2struct();
num2cell();
iscell();
总结:
1)struct和cell看起来是像相似的,其实可以这样理解struct只能过构造1*n个元素,而cell就是个变态版的数组;
2)他们真的没什么联系~~~
8、常用数学函数、画图函数应用
常用数学函数
三角函数和双曲函数
名称
含义
名称
含义
名称
含义
sin
正弦
csc
余割
atanh
反双曲正切
cos
余弦
asec
反正割
acoth
反双曲余切
tan
正切
acsc
反余割
sech
双曲正割
cot
余切
sinh
双曲正弦
csch
双曲余割
asin
反正弦
cosh
双曲余弦
asech
反双曲正割
acos
反余弦
tanh
双曲正切
acsch
反双曲余割
atan
反正切
coth
双曲余切
atan2
四象限反正切
acot
反余切
asinh
反双曲正弦
sec
正割
acosh
反双曲余弦
指数函数
名称
含义
名称
含义
名称
含义
exp
E为底的指数
log10
10为底的对数
pow2
2的幂
log
自然对数
log2
2为底的对数
sqrt
平方根
复数函数
名称
含义
名称
含义
名称
含义
abs
绝对值
conj
复数共轭
real
复数实部
angle
相角
imag
复数虚部
圆整函数和求余函数
名称
含义
名称
含义
ceil
向+∞圆整
rem
求余数
fix
向0圆整
round
向靠近整数圆整
floor
向-∞圆整
sign
符号函数
mod
模除求余
矩阵变换函数
名称
含义
名称
含义
fiplr
矩阵左右翻转
diag
产生或提取对角阵
fipud
矩阵上下翻转
tril
产生下三角
fipdim
矩阵特定维翻转
triu
产生上三角
Rot90
矩阵反时针90翻转
其他函数
名称
含义
名称
含义
min
最小值
max
最大值
mean
平均值
median
中位数
std
标准差
diff
相邻元素的差
sort
排序
length
个数
norm
欧氏长度
sum
总和
prod
总乘积
dot
内积
cumsum
累计元素总和
cumprod
累计元素总乘积
cross
外积
画图函数应用
>>t=0:
0.1:
8*pi;
x=cos(t)+t.*sin(t);
y=sin(t)-t.*cos(t);
plot(x,y)
9、字符串与数值的转换
数值转换为字符串的函数
函数名
功能描述
char
数值截取小数部分后转换为等值字符
int2str
数值的小部分四舍五入后转换为字符串
num2str
把数值类型的数据转换为字符串
dec2hex
把一个正整数转换为16进制的字符串表示
dec2bin
把一个正整数转换为2进制的字符串表示
dec2base
把一个正整数转换为任意进制的字符串表示
字符串转换为数值的函数
函数名
功能描述
double
字符转换为等值的整数
str2num
字符串转换为数值类型
str2double
与str2num类似
hex2dec
把一个16进制的字符串转换为10进制整数
bin2dec
把一个2进制的字符串转换为10进制整数
base2dec
把一个任意进制的字符串转换为10进制整数
>>h=16;
>>g=dec2hex(h)
g=
10
>>hex2dec(g)
ans=
16
10、数据类型的转换
1、整型:
(int8;uint8;int16;uint16;int32;uint32;int64;uint64)
通过intmax(class)和intmin(class)函数返回该类整型的最大值和最小值。
2、浮点:
(single;double)
浮点数:
REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN('single')分别返回双精度浮点和单精度浮点的最小值。
3、逻辑:
(logical)
4、字符:
(char)
5、日期和时间
11、编写求三位整数中是水仙花数的程序
所谓水仙花数是指一个3位数,其各位数字的立方之和等于该数本身,例如153是一个水仙花数,13+53+33=153。
编写求三位整数中是完数的程序,一个数如果恰好等于它的因子之和,这个数就称为完数。
>>A=[];
fori=100:
999
z=rem(i,10);%求得i的个位数数码存放在z中
g=(i-z)/10;%用i的百位和十位组成一个两位数存放在g中
y=rem(g,10);%求得i的十位数数码存放在y中
x=(g-y)/10;%求得i的百位数数码存放在x中
ifx^3+y^3+z^3==i
A=[A,i];
end
end
A
A=
153370371407
实验总结
通过这次实验,熟悉MATLAB系统的启动、退出、演示系统、帮助系统、MATLAB的运行环境,掌握Matlab矩阵、算符、表达式、函数与程序设计及其运行、画图等的基础知识。
发现了自己在基础知识方面还有欠缺,因此我在今后的学习中一定会夯实基础,尤其是要加强相关函数的记忆,加强实践演练。