15年13级matlab实验报告
更新时间:2024-01-28 15:04:01 阅读量: 教育文库 文档下载
- 15天天气预报推荐度:
- 相关推荐
《MATLAB程序设计》实验报告
《MATLAB程序设计》
实验报告
共64 页,第 1页
《MATLAB程序设计》实验报告
实验一 MATLAB的基本功能
一、实验目的
1、了解MATLAB程序设计的开发环境,熟悉命令窗口、工作区窗口、历史命令等窗口的使用。
2、掌握MATLAB常用命令的使用。 3、掌握MATLAB帮助系统的使用。
4、熟悉利用MATLAB进行简单数学计算以及绘图的操作方法。 二、实验内容
1、启动MATLAB软件,熟悉MATLAB的基本工作桌面,了解各个窗口的功能与使用。
2、MATLAB的常用命令与系统帮助:
3、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。
4、思考题。 三、源程序和实验结果
(1) 计算(365-52?2-70)?3
>> (365-52*2-70)/3 ans =
63.6667 (2)
>> area=pi*2.5^2 area =
共64 页,第 2页
《MATLAB程序设计》实验报告
19.6350 (3) 已知x=3,y=4,z?>> y=4; >> x=3;
>> z=x^2*y^3/(x-y)^2 z = 576
(4) 利用who,whos命令查看工作空间内的所有变量,并比较两种命令区别。 >> who
Your variables are:
area x y z >> whos
Name Size Bytes Class
area 1x1 8 double array x 1x1 8 double array y 1x1 8 double array z 1x1 8 double array
Grand total is 4 elements using 32 bytes
(5) 使用clear命令删除工作空间内的所有变量。提示:MATLAB有一些永
久常数(Permanent Constants)如表所示,虽然在工作空间中看不到,但使用者可直接取用。
表1.1 MATLAB中常用的变量,常量
特殊的变量、常量 取 值 共64 页,第 3页
x2y3?x?y?2在MATLAB中求z:
《MATLAB程序设计》实验报告
ans pi eps inf NaN i,j 用于结果的缺省变量名 圆周率π的近似值(3.1416) 数学中无穷小(epsilon)的近似值(2.2204e - 016) 无穷大,如 1/0 = inf (infinity) 非数,如 0/0 = NaN (Not a Number),inf / inf = NaN 虚数单位:i = j =?1 >> clear >> whos >>
(6) 将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字
节数。
?162313??511108?? m1=??97612???414151??>> m1=[16,2,3,13;5,11,10,8;9,7,6,12;4,14,15,1]; >> whos
Name Size Bytes Class
m1 4x4 128 double array
Grand total is 16 elements using 128 bytes
执行以下命令,观察结果: >> m1(2,3) ans = 10
>> m1(11)
共64 页,第 4页
《MATLAB程序设计》实验报告
ans = 6
>> m1(:,3) ans = 3 10 6 15
>> m1(2:3,1:3) ans =
5 11 10 9 7 6
>> m1(1,4)+m1(2,3)+m1(3,2)+m1(4,1) ans = 34
(7) 执行命令>>help abs,查看函数abs的用法及用途,计算abs(3 +4i)。
>> abs(3+4i) ans =
共64 页,第 5页
《MATLAB程序设计》实验报告
5 (8) 执行命令:
>> x=0:0.1:6*pi; >> y=5*sin(x); >> plot(x,y)
(9) 在matlab的命令窗口里完成如下计算,其中t的值分别取-1,0,1,表达式
如下:
y?3?4t?e?sin(43t??/3)2
>> t=[-1,0,1] t =
-1 0 1
>> y=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3*t)+pi/3)
共64 页,第 6页
《MATLAB程序设计》实验报告
y =
1.0e+004 *
2.0897 + 1.2065i 0.0001 0.0000 (10) 求方程组的根:
?x1?4x2?3x3?2??2x1?5x2?x3?11 ?x?6x?x?12?123>> A=[1,4,-3;2,5,-1;1,6,1] A =
1 4 -3 2 5 -1 1 6 1
>> B=[2,11,12]'; >> X=A\\B X = 4 1 2
(11) 一个多项式的系数向量是p=[1 -6 -72 -27],求这个多项式的根并写出多
项式。 >> C=[1,-6,-72,-27]; >> roots(C)
共64 页,第 7页
《MATLAB程序设计》实验报告
ans =
12.1229 -5.7345 -0.3884 4、思考题
(1) 以下变量名是否合法?为什么?
a) x2
合法,以字母开头后面跟数字或字母 b) 3col
不合法,不能以数字开头 c) _row
不合法,MATLAB中变量名不能以下划线开头 d) for
不合法,for是一个关键字,不能用于做变量名
(2) 求以下变量的值,并在MATLAB中验证。
a) a=1:2:5; b) b=[a' a' a']; c) c=a+b(2,:)
>> a=1:2:5 a =
1 3 5
>> b=[a' a' a'] b =
1 1 1
共64 页,第 8页
《MATLAB程序设计》实验报告
3 3 3 5 5 5
>> c=a+b(2,:) c =
4 6 8
共64 页,第 9页
《MATLAB程序设计》实验报告
实验二 MATLAB矩阵及运算
一、实验目的
1、掌握矩阵和数组的表示与赋值方法
2、了解字符串、结构和单元等数据类型在MATLAB中的使用 3、掌握MATLAB中基本的数值运算,了解基本统计函数的使用 4、掌握多项式基本运算以及线性方程组的求解方法 二、实验内容
1、利用“:”操作符和linspace函数生成数组a=[0,6,12,18,24,30,36,42],并将数组a分别转化为4*2和2*4的矩阵。
实验结果: >> a=0:6:42 a =
0 6 12 18 24 30 36 42
>> b=reshape(a,4,2) b =
0 24 6 30 12 36 18 42
>> c=reshape(a,2,4) c =
共64 页,第 10页
《MATLAB程序设计》实验报告
0 12 24 36 6 18 30 42 >> a=linspace(0,42,8) a =
0 6 12 18 24 30 36 42
>> b=reshape(a,4,2) b =
0 24 6 30 12 36 18 42
>> c=reshape(a,2,4) c =
0 12 24 36 6 18 30 42
1??368?-572217??,并使用MATLAB回2、在MATLAB中输入矩阵A???6916-12????1513-210?答以下的问题:
共64 页,第 11页
《MATLAB程序设计》实验报告
(1) 创建一个由A中第2列到第4列所有元素组成的4Χ3数组B;
实验结果:
>> A=[3,6,8,1;-5,7,22,17;6,9,16,-12;15,13,-21,0] A=
3 6 8 1 -5 7 22 17 6 9 16 -12 15 13 -21 0 >> B=[A(:,2:4)] B =
6 8 1 7 22 17 9 16 -12 13 -21 0
(2) 创建一个由A中第3行到第4行所有元素组成的2Χ4数组C;
实验结果:
>> C=[A(3:4,:)] C =
6 9 16 -12 15 13 -21 0
共64 页,第 12页
《MATLAB程序设计》实验报告
(3) 创建一个由A中前两行和后三列所有元素组成的2Χ3数组D;
实验结果:
>> D=[A(1:2,2:4)] D =
6 8 1 7 22 17
(4) 根据A利用单下标方法和双下标方法分别创建向量a=[-5 6 15]和向量
??56?b=[6 8 1],并利用向量a和b生成矩阵E??68?;
????151??实验结果:
>> a=A(2:4) a =
-5 6 15
>> b=A(1,2:4) b =
6 8 1 >> E=reshape([a,b],3,2) E =
共64 页,第 13页
《MATLAB程序设计》实验报告
-5 6 6 8 15 1
(5) 利用“[]”删除矩阵A的第二行和第三列。
>> A(2,:)=[]; >> A(:,3)=[] A =
3 6 1 6 9 -12 15 13 0
3、利用ones()函数和zero()函数生成如下矩阵:
?0?0?A??0??0??0实验结果:
>> A=zeros(5,5); >> A(2:4,2:4)=ones(3,3); >> A(3,3)=3 A =
0 0 0 0 0 0 1 1 1 0 0 1 3 1 0 0 1 1 1 0
0000?1110??1310?
?1110?0000??共64 页,第 14页
《MATLAB程序设计》实验报告
0 0 0 0 0
??4?12?4、生成矩阵A???303?:
?????214??(1) 取出所有大于0的元素构成一个向量a(可推广到从一个矩阵里筛选出
符合条件的元素组成一个向量)。 实验结果:
>> A=[-4,-1,2;-3,0,3;-2,1,4] A =
-4 -1 2 -3 0 3 -2 1 4 >> a=A(find(A>0)) a = 1 2 3 4
(2) 将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表
示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。
>> b=A.*(A>0) b =
共64 页,第 15页
《MATLAB程序设计》实验报告
0 0 2 0 0 3 0 1 4
?1??147?12324?1?????0?d??852?c?5、已知a??,,b???135???,??下列运456????????2???360??算是否合法,为什么?如合法,写出计算结果? (1) result1=a' 实验结果: >> r1=a' r1 =
1 4 2 5 3 6 (2) result2=a*b
不合法,乘法运算的两矩阵被乘矩阵的行数必须等于乘矩阵。 (3) result3=a+b
>> r3=a+b r3 =
3 6 2 5 8 11 (4) result4=b*d >> r4=b*d
r4 =
31 22 22 40 49 13
共64 页,第 16页
《MATLAB程序设计》实验报告
(5) result5=[b;c']*d
>> result5=[b;c']*d result5 =
31 22 22 40 49 13 -5 -8 7
(6) result6=a.*b >> result6=a.*b
result6 =
2 8 -3 4 15 30
(7) result7=a./b
>> result7=a./b result7 =
0.5000 0.5000 -3.0000 4.0000 1.6667 1.2000 (8) result8=a.*c
不合法,.*运算的两矩阵大小必须相等
(9) result9=a.\\b
>> result9=a.\\b result9 =
共64 页,第 17页
《MATLAB程序设计》实验报告
2.0000 2.0000 -0.3333 0.2500 0.6000 0.8333 (10) result10=a.^2 >> result10=a.^2
result10 =
1 4 9 16 25 36
(11) result11=a^2
>> result12=2.^a
result12 =
2 4 8 16 32 64
不合法,乘方运算必须为方阵
(12) result11=2.^a
?134???784?6、已知a??51244?,b??122438?,c?[1,0,8,3,6,2,?4,23,46,6]
???????7827???68?53??(1) 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果,并观察运算结果。
实验结果: >> a+b ans =
-6 11 8 17 36 92
共64 页,第 18页
《MATLAB程序设计》实验报告
75 3 30 >> a*b ans =
301 3101 1883 >> a.*b ans =
-7 60 476 >> a/b ans =
0.1913 0.0660 -2.0242 1.1060 -1.0477 0.6574 >> a./b ans =
60 160 108 728 113 493 24 16 288 2112 -40 81 0.0228 -0.3300 -0.1209 共64 页,第 19页
《MATLAB程序设计》实验报告
-0.1429 0.3750 1.0000 0.4167 0.5000 0.9167 0.1029 -1.6000 9.0000 >> a^2 ans =
44 71 244 373 511 1736 236 333 1109 >> a.^2 ans =
1 9 16 25 144 1936 49 64 729
(2) 求c中所有元素的平均值、最大值、中值,并将c中元素按从小到大顺
序排列。
>> aver=sum(c)/length(c)
aver =
9.1000
>> aver=mean(c)
aver =
9.1000
>> maxC=max(c)
共64 页,第 20页
《MATLAB程序设计》实验报告
maxC = 46
>> minC=min(c) minC = -4
>> mid=median(c) mid =
4.5000 >> sort(c) ans =
-4 0 1 2 3 6 6 8 (3) 解释b(2:3,[1,3])的含义,并将生成的数组赋值给d。
b(2:3,[1,3])表示取b矩阵的第2,3行、第1,3列的元素 >> d=b(2:3,[1,3]) d =
12 48 68 3 关系运算与逻辑运算
7、已知a=20,b=-2,c=0,d=1,计算下列表达式:
共64 页,第 21页
23 46 《MATLAB程序设计》实验报告
实验结果:
(1) r1=a>b
>> r1=a>b r1 = 1 (2) r2=a>b&c>d
>> r2=a>b&c>d r2 = 0 (3) r3=a==b*(-10) >> r3=a==b*(-10) r3 =
1
(4) r4=~b|c
>> r4=~b|c r4 = 0
??7218、已知A??9153???2?211?132(1) 求矩阵A的秩(rank);
?2??2?5?? 13??共64 页,第 22页
《MATLAB程序设计》实验报告
(2) 求矩阵A的行列式(determinant); (3) 求矩阵A的逆(inverse);
(4) 求矩阵A的特征值及特征向量(eigenvalue and eigenvector)。
A的秩(rank) >> rankA=rank(A) rankA = 4 A的行列式 >> detA=det(A) detA =
12568 A的逆矩阵 >> invA=inv(A) invA =
0.1744 -0.0303 -0.1050 0.0789 0.0083 0.0173 0.0095 -0.0185 A的特征向量 >> eigA=eig(A) eigA =
4.8554
-0.0125 0.0270 -0.0121 0.0006 0.0911 -0.0311 -0.0103 0.0795 共64 页,第 23页
《MATLAB程序设计》实验报告
12.6460 + 1.8333i 12.6460 - 1.8333i 15.8526
9、已知多项式f1(x)=2x4-x2+3x+2,f2(x)=3x+2,利用MATLAB进行如下计算: 实验结果:
(1) 计算两多项式的乘法和除法;
>> a=[2,-1,3,2]; >> b=[3,2]; >> conv(a,b) ans =
6 1 7 12 4 (2) 求多项式f1(x)的根;
>> roots(a) ans =
0.5000 + 1.3229i 0.5000 - 1.3229i -0.5000
?13?(3) 分别计算多项式当x=3以及x???时的值。 24??X=3时两个多项式的值: >> x=3;
>> y1=polyval(a,x) y1 = 56
共64 页,第 24页
《MATLAB程序设计》实验报告
>> y2=polyval(b,x) y2 =
11
X为题中矩阵时,两个多项式的值: >> x2=[1,3;2,4]; >> y1=polyval(a,x2) y1 =
6 56 20 126
>> y2=polyval(b,x2) y2 =
5 11 8 14
10、用两种方法求下列方程组的解,并比较两种方法执行的时间。
?7x1 ?14x2?9x3?2x4?5x5?3x ?15x?13x?6x?4x12345????11x1 ?9x2?2x3?5x4?7x5?5x ?7x?14x?16x?2x2345?1???2x1 ?5x2?12x3?11x4?4x5?100?200?300 ?400?500>> A=[7,14,-9,-2,5;3,-15,-13,-6,-4;-11,-9,-2,5,7;5,7,14,16,-2;-2,5,12,-11,-4]; >> b=[100,200,300,400,500]'; >> tic,x=rref([A,b]),toc
共64 页,第 25页
《MATLAB程序设计》实验报告
x =
1.0000 0 0 0 0 370.9444 0 1.0000 0 0 0 -224.7273 0 0 1.0000 0 0 238.3333 0 0 0 1.0000 0 -138.1892 0 0 0 0 1.0000 503.6364
Elapsed time is 0.047000 seconds. >> tic,x=A\\b,toc x =
370.9455 -224.7276 238.3333 -138.1891 503.6378
Elapsed time is 0.000000 seconds. 使用左除运算执行的时间比rref()更短
11、建立一个元胞数组,要求第一个元素为4Χ4的魔术矩阵,第二个元素为18.66,第三个元素为'matlab',第四个元素为等差数列7,9,11,13…99。计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第10个元素。
>> A={magic(4),18.66,'matlab',[7:2:99]} A =
[4x4 double] [18.6600] 'matlab' [1x47 double]
共64 页,第 26页
《MATLAB程序设计》实验报告
>> A{1} ans =
16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
>> B=A{1}(4,2)+A{2}+A{3}(2)+A{4}(10) B =
154.6600
12、建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。问题是:
(1) 如何找到第2个人的分数并显示出来;
>> student(2).score
(2) 如何找到第2个人的每门课程3个阶段的平均分数并显示出来;
>> aver=mean(student(2).score,2)
(3) 所有同学的10门课程的每门课程的平均分如何计算出来?要求放到一
个数组里;
>>SMean=(mean(student(1).score)+mean(student(2).score)+mean(student(3).score))/3
(4) 找到这个班所有同学的姓名放到一个元胞数组里;
>> SName{1}=[student(1).name,student(2).name,student(3).name] 13、完成以下操作:
(1) 已有str=‘decision 20 made on 10/20/10’,查找字符串中20出现的位置。
>> findstr(str,'20')
共64 页,第 27页
《MATLAB程序设计》实验报告
ans =
10 24
(2) 有字符串s1=’matlabexpress’,s2=‘matlabexcellent’,比较两个字符串的
前8个字符是否相同,相同输出1,否则输出0。 >> strcmp(s1(1:8),s2(1:8)) ans = 1
(3) 统计字符串s1=‘matlabexpress’中ex出现的次数,并替换为EX。
>> length(findstr(s1,'ex')) ans = 1
>> s1([findstr(s1,'ex'):findstr(s1,'ex')+1])='EX' s1 =
matlabEXpress
共64 页,第 28页
《MATLAB程序设计》实验报告
实验三 MATLAB程序设计
一、实验目的
1、掌握建立和执行M文件的方法。
2、掌握选择结构、多分支选择结构程序的编程方法。 3、掌握多种循环结构程序的编程方法。 4、掌握定义函数文件和调用函数文件的方法。 二、实验内容
1、MATLAB M文件的创建与使用。 (1) 建立自己工作目录,
(2) 在M文件编辑器中编制命令行文件。 (3) 命令行程序运行。
(4) 按上述步骤,在编辑器中输入如下函数文件:
function f=tt(n)
%求小于任何正整数且为2的整数次幂的正整数。 %c=n(n)
%n可取任意正整数。 %河北工业大学实验室130 04年8月。 f(1)=2; k=1;
while f(k) 调试后,将其以test2.m形式保存在D:\\MATLAB中。 (5) 进入命令窗口,键入test2(9),观察程序运行结果。 实验结果: >> test2(9) 共64 页,第 29页 《MATLAB程序设计》实验报告 f = 2 4 8 ans = 2 4 8 2、编写一个函数M文件,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。 ?sinx,?y(x)??x,??x?6,?选择一些数据测试编写的函数。 源程序及实验结果: function y=tt(x) %给出标量x调用函数返回y的值 if(x<=0) y=sin(x); elseif(x<=3) y=x; else y=-x+6; end y x?00?x?3 x?3 3、编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。其中方均根值(Root Mean Square)的计算公式为: rms?并用下面数据测试你写的函数: (1) x=sin(0:0.01:6*pi) 1N?xi?1N2i 共64 页,第 30页 《MATLAB程序设计》实验报告 (2) x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。 源程序及实验结果: function f=myFun(x) l=length(x);%向量中元素的个数 Sum=sum(x)%向量所有元素求和 Ave=mean(x)%取平均值 Max=max(x)%向量中的最大值 Min=min(x)%向量中的最小值 Rms=sqrt(sum(x.^2)/l)%方均根 >> myFun(sin(0:0.01:6*pi)) Sum = -2.1218e-004 Ave = -1.1256e-007 Max = 1.0000 Min = -1.0000 Rms = 共64 页,第 31页 《MATLAB程序设计》实验报告 0.7071 >> myFun(rand(1,200)) Sum = 99.3810 Ave = 0.4969 Max = 0.9943 Min = 0.0099 Rms = 0.5707 4、编写一个函数M文件,若给出一个向量x?[x1,x2,?xn],函数返回如 共64 页,第 32页 《MATLAB程序设计》实验报告 下范德蒙矩阵。 1?1?xx2?12x2?x12????n?1n?1?xx2?1?????1?xn??2xn? ???n?1?xn?1??111?2345??,例如在命令窗口输入>>v=myvander([2 3 4 5]),得v???491625????82764125?同时生成一些数据测函数。 源程序及实验结果: 15-10-26 function f=myvander(x) l=length(x); f=[]; for i=0:l-1 y=[x].^i; f=[f;y]; end >> v=myvander([2,3,4,5]) v = 1 1 1 1 2 3 4 5 4 9 16 25 8 27 64 125 5、分别使用while和for编写命令文件,用循环语句编程计算s值: s??(n3?n2)n?210 共64 页,第 33页 《MATLAB程序设计》实验报告 同时对编写的文件设置断点,观察变量取值的变化情况。 源程序及实验结果: 15-10-26 n=2; s=0 while n<=10 s=s+n^3-n^2 pause(2) n=n+1; end s=0 for n=2:10 s=s+n^3-n^2 pause(2) end >> test3 s = 0 s = 4 s = 22 s = 共64 页,第 34页 《MATLAB程序设计》实验报告 70 s = 170 s = 350 s = 644 s = s = s = 共64 页,第 35页 1092 1740 《MATLAB程序设计》实验报告 2640 6、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2?1 3?10?5?16?8?4?2?1 6?3?10?5?16?8?4?2?1 建立命令M文件,完成上述功能,要求显示数字处理过程。 源程序及实验结果: 15-10-26 function f=tt(x) temp=x; f=x; fla=true; if temp==1 fla=false; end while fla if rem(temp,2)==0 temp=temp/2; else temp=temp*3+1; end f=[f,temp]; if temp==1 fla=false; end end >> tt(2) ans = 2 1 共64 页,第 36页 《MATLAB程序设计》实验报告 >> tt(3) ans = 3 10 5 16 8 4 2 1 >> tt(6) ans = 6 3 10 5 16 8 4 2 1 7、设计一个学生身高的管理系统,输出身高的基本分为5等:很高、较高、中等、较矮、矮,其中190cm以上为“很高”,[180cm,190cm)区间为“较高”,[170cm,180cm)为“中等”,[160cm,170cm)为“较矮”,160cm以下为“矮”,要求分别用if语句和switch语句实现 源程序及实验结果: 15-11-2 height.m function f=height(x) if x>190 disp('if语句实现 很高') elseif x>=180 disp('if语句实现 较高') elseif x>170 disp('if语句实现 中等') elseif x>160 disp('if语句实现 较矮') else disp('if语句实现 矮') end switch x case x<160 disp('switch语句实现 矮'); case num2cell(160:170) disp('switch语句实现 较矮'); case num2cell(170:179) disp('switch语句实现 中等'); 共64 页,第 37页 《MATLAB程序设计》实验报告 case num2cell(180:190) disp('switch语句实现 较高'); otherwise disp('switch语句实现 很高'); end >> height(187) if语句实现 较高 switch语句实现 较高 8、Fibonacci数组的元素满足Fibonacci规则: ak+2=ak+ak+1,(k=1,2,3,?);且a1= a2=1。 请设计一段程序,求出该数组中第一个大于10000的元素 源程序及实验结果: 15-10-26 x=[1,1];%前两个元素的值为1,1 n=2;%n表示当前数组中元素的个数 y=1;%y为数组中最大的一个数 while y<10000 n=n+1; y=x(n-1)+x(n-2); x=[x,y]; end disp(['i=',num2str(n)]) disp(['a(i)=',num2str(y)]) 显示的结果为: >> test8 i=21 a(i)=10946 9、编写一个函数文件and.m,用于求两个输入矩阵的乘积和点乘,然后在命令行窗口中调用该函数,要求: 源程序及实验结果: and.m程序: 15-10-30 X=input('inputX'); 共64 页,第 38页 《MATLAB程序设计》实验报告 Y=input('inputY'); mx=size(X,1);%得到X矩阵的行数,存入mx nx=size(X,2);%得到X矩阵的列数,存入nx [my,ny]=size(Y);%Y矩阵的行数在my,列数在ny if mx==nx && my==ny%如果X、Y都是方阵 if(nx==my) %如果方阵X、Y大小一样 disp('x*y='); f1=X*Y %矩阵相乘 disp('x.*y='); f2=X.*Y %矩阵点乘 end elseif nx==my %X、Y不都是方阵 disp('x*y='); f=X*Y %只做矩阵相乘的运算 else disp('cannot muitiple(X,Y)'); end (1) 当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。 >> and inputX[1,2;3,4] inputY[2,3;4,5] x*y= f1 = 10 13 22 29 x.*y= f2 = 2 6 12 20 共64 页,第 39页 《MATLAB程序设计》实验报告 (2) 当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘 >> and inputX[1,2;3,4] inputY[2;3] x*y= f = 8 18 (3) 当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘” >> and inputX[1,2;3,4] inputY[3;4;5] cannot muitiple(X,Y) 10、编写一个阶乘函数factorial.m,然后在如下程序中调用该函数, “分别使用for和while语句找出最小的n值,使得n!>10100,并求出n!” 源程序及实验结果: %for语句找出最小的n,满足n!>10100 15-11-2 m2=1; j=1; while m2<10100 j=j+1; m2=m2*j; end disp(['n=',num2str(j)]); disp([num2str(j),'!=',num2str(m2)]); disp(' '); %for语句找出最小的n,满足n!>10100 共64 页,第 40页 《MATLAB程序设计》实验报告 m1=1; for i=1:10 m1=m1*i; if(m1>10100) disp(['n=',num2str(i)]); disp([num2str(i),'!=',num2str(m1)]); return; end end >> factorial n=8 8!=40320 n=8 8!=40320 11、下列程序用来判断一个人的体温是否处于危险状态。调试程序是否正确,如果程序错误指出错误在哪里?并写出正确答案。 temp=input(‘请输入体温: temp = ’); if temp < 36.5 disp(‘体温偏低’); elseif temp > 36.5 %错误,这个条件划分错误,会导致下面的elseif无法执行 disp(‘体温正常’); elseif temp > 38.0 disp(‘体温偏高!’); elseif temp > 39 disp(‘体温高!!’); end 错误改正之后: 15/11/2 temp=input('请输入体温: temp = '); if temp < 36.5 共64 页,第 41页 《MATLAB程序设计》实验报告 disp('体温偏低'); elseif temp <37.5 %将体温正常的条件满足区域定义在(36.5,37.5) disp('体温正常'); elseif temp <39.0 disp('体温偏高!'); elseif temp > 39 disp('体温高!!'); end 12、使用嵌套for循环命令创建下列矩阵: ?5?1?A??0??0??0源程序及实验结果: forC.m 15-11-2 %嵌套for循环创建一个矩阵 clear A for i=1:5 for j=1:5 if i==j A(i,j)=5;%对角线赋值为5 elseif j==i+1||j==i-1 A(i,j)=1; else A(i,j)=0; end end end A 1000?5100??1510? ?0151?0015?? >> forC A = 共64 页,第 42页 《MATLAB程序设计》实验报告 5 1 0 0 0 1 5 1 0 0 0 1 5 1 0 0 0 1 5 1 0 0 0 1 5 实验四 MATLAB绘图功能 一、实验目的 1、掌握MATLAB二维图形绘制命令及其图形控制; 2、熟悉MATLAB三维图形绘制命令及其图形控制; 3、熟悉特殊二维图形、三维图形的绘制方法。 二、实验内容 1、在同一坐标系下绘制下面三个函数在t?[0,40]的图象,要求三种曲线采用不同颜色以及不同的线型,同时对每条曲线利用函数进行标注,并添加图例。 y1?ty2?ty3?4?e?0.1tsin(t)源程序: 15-11-23 %画曲线图 %作者 t=0:0.1:40; y1=t; y2=sqrt(t); y3=4*pi*exp(-0.1*t).*sin(t); plot(t,y1,'.r',t,y2,'-b',t,y3,'--k') text(10,10,'y=t'); text(25,6,'y=sqrt(t)'); gtext('y=4*pi.*exp(-0.1*t).*sin(t)'); legend('y=t','y=sqrt(t)','y=4*pi.*exp(-0.1*t).*sin(t)') 共64 页,第 43页 《MATLAB程序设计》实验报告 2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象,并对分段的曲线进行标注,同时添加x轴和y轴的说明。 ?sinx,?y(x)??x,??x?6,?源程序: x=-6:0.1:6; y=[]; for x0=x if x0<=0 y=[y,sin(x0)]; elseif x0<=3 y=[y,x0]; else y=[y,-x0+6]; end end plot(x,y) title('分段曲线函数'); xlabel('variable X'); ylabel('variable Y'); gtext('y=sin(x)'); text(2,2.1,'y=x'); gtext('y=-x+6') 实验结果: x?00?x?3 x?3共64 页,第 44页 《MATLAB程序设计》实验报告 3、利用subplot函数在同一绘图窗口中用不同颜色和线型绘制以下两个函数在t?[-2?,2?]范围内的图象。 y1?20.5t源程序: y2?2e?0.2t clear t=-2*pi:0.1*pi:2*pi; y1=2.^0.5*abs(t); y2=2*exp(-0.2*t); subplot(1,2,1) plot(t,y1);title('y1=2^0.5*abs(t)'); subplot(1,2,2); plot(t,y2);title('y2=2*exp(-0.2*t)'); 实验结果: 共64 页,第 45页 《MATLAB程序设计》实验报告 4、某学校有30位教师,其中教授5人,副教授8人,讲师12人,助教5人.试画出职称比例结构饼图,并强调图形的教授部分同时添加标注。 %画饼状图 clear x=[5,8,12,5]; y=[1,0,0,0] pie(x,y); gtext('教授') 5、生成1×10维的随机数向量a,分别用红、黄、蓝、绿色绘出其连线图、脉冲图、阶梯图和条形图,并分别标出标题“连线图”、“脉冲图”、“阶梯图”、“条形图”。 共64 页,第 46页 《MATLAB程序设计》实验报告 源程序: 5-11-30 %作者 %画连线图、脉冲图、阶梯图、条形图 a=rand(1,10); subplot(2,2,1) plot(a,'r') title('连线图'); subplot(2,2,2) stem(a,'p') title('脉冲图'); subplot(2,2,3) stairs(a,'b') title('阶梯图'); subplot(2,2,4) bar(a,'g') title('条形图'); 6、使用subplot函数,把图形窗口分成两个部分,分别绘制sin2t和3cos3t曲线,t范围:0-5.要求前者用红色实线,数据点形状为五角星,有网格线,x轴加标注“x”,y轴加标注“y=sin2t”,加题目“y=sin2t的曲线”;后者用蓝色虚线,数据点形状为圆形,无网格线,x轴加标注“x”,y轴加标注“y=3cos3t”,加题目“y=3cos3t的曲线”; 源程序: t=0:0.1:5; 共64 页,第 47页 《MATLAB程序设计》实验报告 y1=sin(2*t); y2=3*cos(3*t); subplot(1,2,1); plot(t,y1,'-r',t,y1,'p') grid on title('y=sin2t'); xlabel('X'); ylabel('y=sin2t'); subplot(1,2,2); plot(t,y2,'--b',t,y2,'.') grid off title('y=3cos3t'); xlabel('X'); ylabel('y=3cos3t'); 7、绘制下列三维曲线: ?x?e?t/20cost??t/20sint,0?t?2? (2) (1)?y?e?z?t?(1)的源程序: t=0:0.1*pi:2*pi; x=exp(-t/20).*cos(t); y=exp(-t/20).*sin(t); z=t; plot3(x,y,z) 实验结果: 共64 页,第 48页 ?x?t?2?y?t,0?t?1 ?z?t3?《MATLAB程序设计》实验报告 (2)的源程序: x=0:0.1:1; y=x.^2; z=x.^3; figure;plot3(x,y,z) 实验结果: 8、绘制下列曲面图,并调整三维图的视角、背景色、着色以及透视效果。 (1) z=5,|x|≤5,|y|≤5 (2) f(x,y)??51?x2?y2,x?3,y?3 (1)源程序: 共64 页,第 49页 《MATLAB程序设计》实验报告 15-11-30 %画曲面图 x=linspace(-2.5,2.5); y=linspace(-2.5,2.5); [X1,Y1,Z1]=meshgrid(x,y,5); mesh(X1,Y1,Z1); view(-37.5,30) (2)源程序: [x,y]=meshgrid(-3:0.01:3); z=-5./(1+x.^2+y.^2); surf(x,y,z); view(-37.5,30); colordef white; shading flat; colormap pink; light('Position',[0,1,1]) lighting flat 实验结果: 共64 页,第 50页
正在阅读:
15年13级matlab实验报告01-28
和平丽景售楼处施工图预算+++10-31
诗词曲18-2017年版新课标高中语文72篇必背古诗文理解性默写之《琵琶行》(含答案)11-25
撞车之后处理的绝招03-22
矿山地质IB姚玉增05-17
社会实践报告03-31
云南小学生作文06-15
电大国际经济法网考复习题库小抄12-28
第八章++行政责任105-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- 报告
- matlab
- 新疆阿克苏地区2012年面向社会公开选拔县处级领导干部简章
- 雷暴
- 2014年湖南省会计从业资格证考试《会计基础》专项真题练习
- 《现代管理学》2018年10月自考复习资料和参考答案
- 奥鹏南开16春学期《中国近代人物研究(尔雅)》在线作业
- 河北省石家庄2018届高三教学质量检测(二)理综化学
- 箱涵首件开工报告
- 37205-00 - SQL Server 2005课后实训参考答案
- 2016年商业补充医疗保险索赔需知-试行
- 磁共振的基本原理 - 图文
- 小麦科学合理施肥
- 2015信息科技试卷第二场
- 08级期末复习题
- 双人钓鱼船项目可行性研究报告(发改立项备案+2013年最新案例范文)详细编制方案
- 浙江省沿海标准渔港布局与建设规划 - 图文
- (崇尚品德的故事)明辨是非的故事 - 僧一行测量子午线
- 第五章化学习题
- 东北师范大学本科学分制教学管理暂行办法
- 语篇分析美剧《生活大爆炸》中的幽默
- 新课程理念下努力构建民主开放的语文课堂