前言
为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!
本次实验于毕业设计及毕业论文撰写间隙完成,因此本系列实验报告撰写较慢。同时,也欢迎各位同学踊跃投稿!
一、实验目的
1、理解Matlab数据对象的特点;
2、掌握MATLAB中数组的创建方法,熟悉数组的访问和赋值;
3、熟悉基本的Matlab运算规则;
4、掌握Matlab帮助的使用方法。
二、实验环境
计算机一台(带有MATLAB7.0以上的软件环境)
三、实验内容及步骤
实验课前预习要求:
1.请在实验课前应熟悉实验中需要用到的相关函数的用法。
2.注意对实验中出现的相关函数或变量,请使用doc 函数名或help 函数名查看对应matlab帮助文档和语法,理解其含义,以正确解决实验中的问题。
1、建立以下标量并进行计算:。
1)
a
=
10
a=10
a=10
2)
b
=
2.5
∗
1
0
23
b=2.5*10^{23}
b=2.5∗1023
3)
c
=
2
+
3
i
c=2+3i
c=2+3i(i为虚数单位)
4)
d
=
2
s
i
n
85
°
1
+
e
2
d=\frac{2sin85°}{1+e^2}
d=1+e22sin85°(e为自然数,这里要用到exp,下同)
5)
x
=
1
1
+
e
−
(
a
−
15
)
/
6
x=\frac{1}{1+e^{-(a-15)/6}}
x=1+e−(a−15)/61
6)
y
=
(
a
+
b
21
)
π
y=(\sqrt{a}+\sqrt[21]{b})^{\pi}
y=(a+21b)π同时参考sqrt,pi。
2、根据向量特点,选择适合的方式,建立以下向量并进行计算:
1)aVec=[3.1 1 9 2.6]
2)bVec=
3)cVec=[5 4.5 … -4.5 -5 ] (向量中的数值从5到-5,步长为-0.5)。
4)
d
V
e
c
=
[
1
0
0
1
0
0.01
…
1
0
0.99
1
0
1
]
dVec=[10^0 10^{0.01} … 10^{0.99} 10^1]
dVec=[100100.01…100.99101] (产生1到10之间的等对数间隔向量,参考logspace,注意向量的长度)。
5)
x
V
e
c
=
e
−
c
V
e
c
2
/
2.
5
2
xVec=e^{-cVec^2/2.5^2}
xVec=e−cVec2/2.52,e是自然数。
6)
y
V
e
c
=
(
a
V
e
c
T
)
2
+
b
V
e
c
2
yVec=\sqrt{(aVec^T)^2+bVec^2}
yVec=(aVecT)2+bVec2,
a
V
e
c
T
aVec^T
aVecT表示
a
V
e
c
aVec
aVec的转置
7)
z
V
e
c
=
log
10
(
1
/
d
V
e
c
)
zVec=\log_{10}(1/dVec)
zVec=log10(1/dVec),
log
10
\log_{10}
log10表示以10为底的对数,参考log10
3、建立以下矩阵:
1)
aMat 一个9×9的矩阵,其元素全为2;(参考ones或zeros)。
2)
bMat是一个9×9的矩阵,除主对角上的元素为[1 2 3 4 5 4 3 2 1]外,其余元素均为0。(参考diag )。
3)
cMat为一个10×10的矩阵,可由1:100的向量来产生(参考reshape)
4)
5)产生一个5×3随机整数矩阵fMat,其值的范围在-3到3之间。(参考rand和floor或ceil或fix)
4、使用题2和题3中所产生的向量和矩阵计算以下等式,注意本题的操作均是使用矩阵运算。注意观察运算前和运算后矩阵大小的变化。
1)
x
M
a
t
=
(
a
V
e
c
⋅
b
V
e
c
)
⋅
a
M
a
t
2
xMat=(aVec·bVec)·aMat^2
xMat=(aVec⋅bVec)⋅aMat2
2)
y
M
a
t
=
b
V
e
c
⋅
a
V
e
c
yMat=bVec·aVec
yMat=bVec⋅aVec,注意这里
a
V
e
c
⋅
b
V
e
c
aVec·bVec
aVec⋅bVec与是不一样的
3)
z
M
a
t
=
∣
(
c
M
a
t
)
∣
(
a
M
a
t
⋅
b
M
a
t
)
T
zMat=\left|(cMat)\right|(aMat·bMat)^T
zMat=∣(cMat)∣(aMat⋅bMat)T 这里
∣
(
c
M
a
t
)
∣
\left|(cMat)\right|
∣(cMat)∣为
c
M
a
t
cMat
cMat所对应行列式的值,参考det。
5、用矩阵左除运算求解线性方程组
doc inv查询inv函数的功能,试试用该函数求解本题方程
6、完成以下操作(记录指令和执行结果)
(1)求[100,999]之间能被21整除的数的个数。
提示:先利用冒号表达式,再利用find和length函数
(2)建立以字符串向量,删除其中的大写字母。
要求:第(2)题,要求建立的字符串向量为你的班级姓名全拼学号,其中班级为XinXiAnQuan18,姓名全拼首字母大写,如"舒马赫"——Schumacher。
假设某同学为信息181班的老六,学号181000345。对应字符串为:
X
i
n
X
i
181
L
a
o
L
i
u
181000345
XinXi181LaoLiu181000345
XinXi181LaoLiu181000345
7、教材P362实验3实验内容1
从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;然后将第一位数与第三位数互换,第二位数与第四位数互换。
四、实验代码
%Knight_Von_Schumacher
%开始答题...
%第一题
a=10;
b=2.5*10^23;
c=2+3i;
d=2*sind(85)/(1+exp(2));
x=1/(1+exp(-(a-15)/6));
y=(sqrt(a)+b^(1/21))^pi;
%第二题
aVec=[3.1 1 9 2.6];
bVec=[2.7;8;2;12];
cVec=5:-0.5:-5;
dVec=logspace(0,1,101);
xVec=exp(-cVec.^2/2.5^2);
yVec=sqrt((aVec)'.^2+bVec.^2);
zVec=log10(1./dVec);
%第三题
aMat=2*ones(9);
bMat=diag([1 2 3 4 5 4 3 2 1]);
cMat=reshape(1:100,[10,10]);
eMat=[-3 -2 0;6 15 8];
fMat=round(-3+6*rand(5,3));
%第四题
xMat=(aVec*bVec)*aMat.^2;
yMat=bVec*aVec;
zMat=det(cMat)*(aMat*bMat)';
%第五题
left=[2 -1 3;2 0 2;4 2 5];right=[1 6 4]';
c=inv(left)*right;
%第六题
num=length(find(rem(100:999,21)==0));
name='Ich_Bin_Knight_Von_Schumacher18103721729';delete=name<'A'|name>'Z';name(delete)
%第七题
number=input('please input number ranging from 1000 to 9999:');
a=rem((number-rem(number,1000))/1000+7,10);
b=rem((rem(number,1000)-rem(number,100))/100+7,10);
c=rem((rem(number,100)-rem(number,10))/10+7,10);
d=rem(rem(number,10)+7,10);
ans=c*1000+d*100+a*10+b;
五、实验要求
1、教材P46,应用题第4小题。
写出完成下列操作的命令
(1)将矩阵A第2~5行中第1、3、5列元素赋给矩阵B。
(2)删除矩阵A的第5号元素。
(3)求矩阵A的大小和维数。
(4)将向量t的0元素用机器零来代替。
(5)将含有12个元素的向量x转换成3*4矩阵。
(1)B=A(2:5,1:2:5);
(2)A[5]=[];
(3)size(A);ndims(A);
(4)x=[0 0 0 0 1;1 2 3 0 0];x(find(x==0))=eps;
(5)y=reshape([1 2 3 4 5 6 7 8 9 0 1 2],3,4)
2、三角函数中sin函数和sind函数的用法有什么区别?举例,如果要求60度的正弦值,应该如何使用这两个函数。
sin(A):要求A为弧度制 sind(A):要求A为角度制
e.g.:计算60度的正弦值:
ans=sin(pi/3)或ans=sind(60)
3、e代表自然数,ln代表自然对数,其对应的Matlab函数是什么,如果要求10为底的对数、2为底的对数需要用什么函数?
exp()、log()、log10()、log2()
4、根据实验结果说明,用whos或who命令查询工作空间变量时,这两个命令查看结果的特点。
- who给出的列表只能按变量名的字母顺序排列; whos给出的列表可以按变量名的字母顺序排列,也可以按尺寸、所占字节数等顺序。
- who用于列出当前工作空间中所有变量名;whos用于列出当前工作空间中所有变量,以及它们的名字、尺寸(比如一一个矩阵或数组的行列维数)、所占字节数、属性等信息。
5、 自行练习save和load函数的用法。
略