matlab2012实验1参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB 实验一 MATLAB 数值计算
试验报告说明:
1 做试验前请先预习,并独立完成试验和试验报告。

2 报告解答方式:将MATLAB 执行命令和最后运行结果从命令窗口拷贝到每题的题目下面,请将报告解答部分的底纹设置为灰色,以便于批阅。

3 在页眉上写清报告名称,学生姓名,学号,专业以及班级。

3 报告以Word 文档书写。

文档命名方式: 学号+姓名+_(下划线)+试验几.doc 如:110400220张三_试验1.doc 4 试验报告doc 文档以附件形式发送到maya_email@ 。

凡文档命名不符合规范,或者发送方式不正确,不予登记。

5 每次试验报告的最后提交期限:下次试验课之前。

一 目的和要求
1 熟练掌握MATLAB 变量的使用
2 熟练掌握矩阵的创建
3 熟练掌握MATLAB 的矩阵和数组的运算
4 使用元胞数组和结构数组
二 试验内容
1 创建矩阵(必做)
1.1使用直接输入,from:step:to ,linspace ,logspace 等方式创建矩阵。

1.2 输入矩阵12342
46836
9
12a ⎛⎫
⎪= ⎪ ⎪⎝

1.2-1)分别使用全下标和单下标达方式取出元素“8”
>>a=[1 2 3 4;2 4 6 8;3 6 9 12]
>> a(2,4) %全下标方式 >> a(11) % 单下标方式
1.2-2)分别用不同的方式从矩阵a 中取出子矩阵⎥⎦
⎤⎢⎣
⎡1286
4
3
2
%方法一:全下标方式 a([2,3],[1 2 4])
%方法二:单下标方式 a([2 5 11;3 6 12])
% 方法三:利用逻辑向量 l1=logical([0 1 1])
l2=logical([1 1 0 1]) a(l1,l2)
1.2-3)分别写出以下的执行结果:
a ( :, 3 ) a (:,end) a (:, 2 : 3) a ([1 3], : )
a (:) a (2 : 3) a([2 3 4])
本题解答略,希望大家熟练掌握数组运算中 : end 的用法以及 全下标,单下标等方式
2 矩阵的运算(必做)
2.1使用format 命令,将 pi 分别用short 和long 格式显示其值。

>> format short >> pi ans = 3.1416 >> format long >> pi ans =
3.14159265358979
2.2 设3x =, 4v =。

利用MA TLAB 分别计算下面的表达式::
1) 2
2
log()x v + 2)
(2)
x v -
>> x=3; >> v=4;
>> log(x^2+v^2)
ans =
3.21887582486820
>> sqrt(x-3)/(x-2*v)^2 %此处,注意 / 和 \ 的使用区别,有同学混淆了 ans = 0
2.3 计算函数)4sin(1110
)(22
t e
z
t f t
--=的值,其中t 的范围从0到pi ,步长
0.1pi ;Z 为0.707。

)(1t f 为0)(1≥t f 的部分,计算)(1t f 的值。

t=0:0.1*pi:pi;
z=0.707;
f=10*exp(-2*t).*sin(4*t)/sqrt(1-z^2) %或f=10/sqrt(1-z^2)*exp(-2*t).*sin(4*t)
l=(f>=0); % 关系运算,返回l 为逻辑向量 f1=f(l) % 利用逻辑向量l 取出f 中满足要求的元素
%也可以用此指令代替:
% li=find(f>0) %找出大于0元素的下标 % f1=f(li) ;
2.4 设A=[1 2 1; 2 4 2; 2 1 1]; B=[3 1 2; 1 2 2; 3 1 4]; C=A+i*B. 利用MATLAB 观察下列表达式的结果:1) C ’ 和 C .’ 2) A ’ 和 A .’ 3)A*B 和A .*B (注意比较’ 和.’的区别)
求解过程略。

注意区别:’ 是共轭转置,.’是非共轭转置。

* 是矩阵乘,.*是数组乘。

2.5利用MATLAB 求解线性方程组。

(思考:可以用几种方法实现)
⎪⎩⎪
⎨⎧=+=++=++4
2032153y x z y x z y x a=[1 3 1;2 1 3; 1 1 0]
b=[15 20 4]' %注意符号 ' ,也可以写成b=[15;20;4], 注意符号 ;漏写则不是列向量 a\b %此处注意 / 和\ 的区别。

%解法二:
a=[1 3 1;2 1 3; 1 1 0] b=[15 20 4]'
inv(a)*b %此处,注意顺序,有同学写b*inv(a) 思考:错误在哪里?
%解法三
a=[1 3 1;2 1 3; 1 1 0] b=[15 20 4]'
a^-1*b
% 此题考用数值方法求解方程组。

采用符号方法,解题如下: eq1=sym('x+3*y+z=15'); eq2=sym('2*x+y+3*z=20'); eq3=sym('x+y=4');
[x,y,z]=solve(eq1,eq2,eq3)
2.6 分别创建两个3*3的矩阵A=round(10*rand(3)) ,B=round(20*rand(3))-10,利用MATLAB 求B
A AB
1
-。

>> A=round(10*rand(3)),B=round(20*rand(3))-10 A =
10 5 5 2 9 0 6 8 8 B =
-1 8 -2 2 5 9
6 -6 8
>> det(A*inv(B))*det(A)/det(B) %或det(A/B)*det(A)/det(B)
% 或 det(A*B^(-1))*det(A)/det(B) 此题注意右除 / 和左除 \ 区别,有同学混淆。

ans =
2.34277384423157
4 多维数组
创建下面的矩阵⎥⎦⎤⎢
⎣⎡=43
21
A ,⎥⎦⎤⎢⎣⎡=1413
1211B ,⎥⎦

⎢⎣⎡=2423
2221
C 4.1将它们合并为一个322⨯⨯的多维数组 ABC A=[1 2;3 4] B=[11 12;13 14] C=[5 6;7 8] ABC(:,:,1)=A; ABC(:,:,2)=B;
ABC(:,:,3)=C;
或者:ABC=cat(3,A,B,C)
4.2提取ABC 矩阵元素‘22’。

ABC(1,2,3) %下标 或者:ABC(11); %索引
4.3将ABC 矩阵重排为3行,2列,2页 reshape(ABC,[3,2,2])
4.4分别提取A,B,C 矩阵的第2列,组成一个32⨯数组ABC2 ABC2=cat(2,A(:,2),B(:,2),C(:,2)) 或者: ABC2=[A(:,2),B(:,2),C(:,2)]
5 字符串
5.1 创建字符串。

写出执行结果: str='hello matlab!', abs(str) double(str)
ss1=strvcat('this','is','a','','book') ss2=char('this','is','a','','book') ss3=str2mat('this','is','a','','book') 6元胞数组和结构数组的使用
学生信息存放在下列的表格中
6.1 创建元胞数组
1)将每个学生的姓名以字符串形式存储,并将所有的字符串存入一个元胞数组
name={'Mike';'Nancy';'Emily'}
2)将每个学生的学号以字符串形式存储,并将所有的字符串存入一个字符矩阵
id=['1001';'1002';'1003']
3)将学生的所有成绩存放在一个二维数组中
score=[67,83,90;70 78 86;85,80,92]
4)将1)2) 3)中创建的数组合并到一个元胞数组中
stuCell={name,id,score}
5)从4)中创建的元胞中提取所有学生的数学成绩。

stuCell{3}(:,2)
1创建结构数组,将表格信息保存在结构数组student中。

方法一:
student=struct('name',{'Mike','Nancy','Emily'},'id',{'1001','1002','1003'},'score',{[67,83,90],[70,78, 86],[85,80,92]})
思考:
student=struct('name',{'Mike','Nancy','Emily'},'id',['1001','1002','1003'],'score',[[67,83,90],[70,78,8 6],[85,80,92]])
显示结果是什么?错在哪里。

方法二:
student(1)=struct('name','Mike','Id','1001','score',[67 83 90]);
student(2)=struct('name','Nancy','Id','1002','score',[70 78 86]);
student(3)=struct('name','Emily','Id','1003','score',[85 80 92])
方法三:
student(1).name=('Mike')
student(1).id=’1001’
student(1).score=[67 83 90]
student(2).name=('Nancy')
student(2).id=’1002’
student(2).score=[70 78 86]
student(3).name=('Emily')
student(3).id=’1003’
student(3).score=[85 80 92];
2 用disp命令或者fprintf命令打印李四的成绩信息,显示格式如下:×××(姓名)的语文成绩:×××是: ×××
方法一:
fprintf('%s的语文成绩是%d\n',student(2).name,student(2).score(1));
方法二:
str=[student(2).name,'的语文成绩是:',num2str(student(2).score(1))]; disp(str)
思考:str=[student(2).name,'的语文成绩是:', student(2).score(1)];
disp(str)
显示结果将是什么?。

相关文档
最新文档