2024年4月28日发(作者:)

1

二维平面绘图

初探MATLAB

1、请在MATLAB下直接输入下列常数,看它们的值是多少:

I j eps inf nan pi realmax realmin

2、使用lookfor命令,找出具有下列功能的MATLAB命令(每一项只需找出一条

MATLAB命令)

(1)找出矩阵的大小(即行维数和列维数)

(2)改变矩阵的大小(例如将4X6的矩阵改成12X2)

(3)将矩阵左右翻转

(4)将矩阵上下翻转

(5)找出矩阵每一直列的最大值

(6)对矩阵的每一直列进行排序

(7)矩阵的旋转

(8)逆矩阵的计算

(9)求矩阵的秩

(10)计算矩阵的reduced row echelon form

(11)计算矩阵的null space

(12)计算矩阵的特征值和特征向量

(13)计算矩阵的QR分解

(14)计算矩阵的LU分解

(15)计算矩阵的奇异值分解

(16)对向量进行快速傅立叶变换

(17)直角坐标转成极坐标

(18)极坐标转成直角坐标

3、写一个MATLAB小程序,求出最小的n值,使得n!

4、写一个MATLAB函数myfun.m来计算下列方程式:

y=0.5*exp(x/3)-x*x*sin(x)

其中x是函数的输入,y是函数的输出。你的函数必须能处理当x是标量或向量

的两种情况。

5、写一个MATLAB的递归函数fibo.m来计算Fibonacci数列,其定义如下:

fibo(n+2)=fibo(n+1)+fibo(n)

此数列的初始条件如下:fibo(1)=0,fibo(2)=1

6、MATLAB的sqrt命令可对任一数值进行开平方的运算。用此命令求出下列各数的平方

根,并验算:(1)

(2)2i (3)7+24i

1、一个平面上的椭圆可以表示成下列方程式:

(x/a)

(y/b)

22

1

我们也可以用参数将椭圆表示成:x=a*cos(

) y=b*sin(

)

请利用上述参数式,画出一个椭圆,其中a=5,b=3,而且椭圆上共有100个点。

2、一条参数式的曲线可由下列方程式表示:

x=sin(-t)+t y=1-cos(-t)

当t由0变化到4*pi时,画出此曲线在XY平面的轨迹。

3、利萨如图形可用下列参数式来表示:x=cos(m*

) y=sin(n*

)

试画出在不同m、n值的利萨如图形:(1)m=n=1 (2)m=3 n=2 (3)m=10 n=11

2

4、hebysheve多项式的定义如下:

y

cos(m*cos(x))

其中x的值介于[-1,1]。当m的值由1变化到5,我们可得到五条曲线。请将这五条曲线

画在同一张图上,记得要使用legend命令来标明每一条曲线。

5、使用contour命令画出下列隐函数:

提示:画出z=

1

x

y

2

2

25

x

y

2

2

在高度等于25的一条等高线

三维立体绘图

6、当一个小圆轮在平面上滚动时,轮缘的一点在滚动时所形成的轨迹称为“摆线”。请用

MATLAB画出一个典型的摆线,其中小轮的半径为1,而且至少要滚三圈。

7、此题和上题类似。当一个小圆轮沿着一条曲线行进时,轮缘任一点的轨迹就会产生变

化丰富的摆现。假设小圆轮的半径是2。(1)当小圆轮绕着一个大圆(半径为5)的外

部滚动时,请画出其摆线。(2)重复(1),但改成在大圆的内部滚动。

1、请用surf命令来画出下列函数的曲面图:z=x*exp(-

x

-

y

2

2

)

其中x在[-2,2]间共等切分为21点,y在[-1,1]间共等切分为21点,所以此曲面共有

441点。(1)请用默认的颜色对照表(colormap)来画出此曲面。(2)请以曲面的斜率

来设定曲面的颜色。(3)请以曲面的曲率来设定曲面的颜色。

2、请用meshc命令来同时画出下列函数的曲面图和等高线图:z=xy/(x+y)

其中x和y都介于0和1之间,且各自都分成21个栅格点,所以此曲面共有441个点。

此外,等高线图应有20条。请问此曲面在XY平面的哪一点(或区域)会有最大值?

此最大值为何?

3、一个空间中的椭球可以表示成下列方程式:

(x/a)

2

(y/b)

(z/c)

1

22

请使用任何你可以想到的方法,画出三维空间中的一个平滑的椭球,其中a=3,b=4,c=8

特殊图形

1、假设清华大学信息系在2001、2002、2003年的人员组成如表所示:

类别

大一

2001

年份

2002

2003

10

21

15

大二

21

32

23

大三

23

33

23

大四

14

24

44

硕一

35

35

25

硕二

26

26

34

博士班

47

17

27

教职员

48

48

38

(1)请用bar3命令来画出上述数据的立体长条图

(2)请用各种你可以想到的方法,在上述图形中加入各种解释和说明的文字。

2、请使用上题的数据来进行下列两小题:

(1)画出按每年份总人数来切分的立体扇形图,并加上各种可能的说明文字。

(2)重复(1),但改成按每种类别的总人数来切分。

图像显示与读写

1、读入数据文件,将调色板矩阵设为1-map后,显示此负片效果的狒狒图像,

并将此图像存成一个bmp文件。

年份

2003

2002

200198

121

105

类别

大一新生

97

94

110

年份

2003

2002

200199

120

113

类别

大一新生

98

115

101

2、读入位于内的小丑图像,显示图像,并将colormap改成gray,你会发觉小

丑的图像偏暗,请调整调色板矩阵,使其明亮度提高。

3、读入位于的狒狒图像,想办法调整X及map,使得呈现的图像是由全黑或

全白的像素所组成,而且其个数比例大约是1:1。

提示:使用median命令找出X(:)的中位数。

矩阵的处理与运算

tr(A)定义为方阵A的主对角线元素的和,在数学上,只要矩阵A和矩阵B的乘积是一

个方阵,我们可以证明tr(AB)=tr(BA)。试写一个MATLAB程序,任意产生不同维数

的10组A、B,以验证上述恒等式。

GUIDE:GUI设计环境

请使用GUIDE来写出一个图形用户界面的程序,其功能为读入不同的现成图像文件

(随MATLAB而来的图像文件有,

),呈现图像于窗口中,使用者并能将图像汇出成不同的

文件格式,如bmp tiff jpeg png等。

提示:请使用imwrite命令

试用一个三维矩阵A表示上述数据。

2、由上题矩阵A来算出下列各数值:

学士毕业生

89

87

80

硕士毕业生

8

6

5

博士毕业生

3

学士毕业生

多维数组

1、假设信息系及电机系在下列各年度的人口统计如表所示

信息系各年度的人口统计

电机系各年度的人口统计

句柄图形与GUI设计

画出y=sin(x)的图形,其中x的范围是0到4*pi,当鼠标在图轴内单击时,你的程序应

能找出最近的数据点,并将此数据点的坐标显示在MATLAB命令窗口内。

80

87

85

硕士毕业生

15

12

10

博士毕业生

王杰

花心

听海

花心

听海

超快感

一场游戏一场梦

1988

1992

1998

2000

1988

1992

1998

一场游戏一场梦王杰

4

异质数组

1、请建立下列4X3的异质数组A,如表所示:

结构数组

1、假设一异质数组A的内容如表所示:

孙燕姿

周华健

张惠妹

孙燕姿

周华健

张惠妹

超快感

2000

试将此异质数组A转成结构数组song,其中:

song(1).singer=’张惠妹’

song(1).name=’听海’

song(1).year=’1998’

2、此题用到上题的结构数组song

(1)请将结构数组song按歌星名字内码来排序

(2)请将结构数组song按年代来排序

(3)请取出所有歌星的名字,存成一个字符串异质数组

2、在上题异质数组中,每一横行代表一笔数据,我们要用不同的方法来排序:

(1)请按歌星名字内码来排序,产生新的异质数组B

(2)请按年代来排序,产生新的异质数组C

(3)请按歌的名字数来排序,产生新的异质数组D。

(若字数相同,则用内码来排序)

3、在上题的异质数组中,求出年代的最大值、最小值、平均值及中位数。

(1)信息系在2001、2002、2003年之间的每年平均新生、学士毕业生、硕士

毕业生及博士毕业生的个数。

(2)信息系和电机系在各个年度的新生总数。

(3)3年来电机系和信息系共毕业多少位硕士生?

(4)3年来电机系和信息系共有多少 毕业生?

(5)在哪一年,电机系和信息系合计有最多的硕士毕业生?

(6)在哪一年,电机系和信息系的学士毕业生差额最大?

(7)在哪几年,电机系收的新生数目比信息系多?

(8)信息系三年来每年的学士毕业生对大一新生的比例平均值为何?

5

(4)请取出所有的年代,存成一个向量

稀疏矩阵

假设有一个100X100的矩阵A,其元素大部分是零,只有下列几个特定元素不为0:

A(1,3)=4 A(2,5)=10 A(35,70)=4 A(54,98)=5

(1)请用sparse命令来建立此稀疏矩阵A

(2)A占掉多少字节

(3)若A是完全矩阵,且是double的数据类型,则会占去多少字节

(4)若A是完全矩阵,且是uint8的数据类型,则会占去多少字节

(5)使用spy来画出非零元素的分布状况

MATLAB的运算符

1、给定一实数矩阵A,请写一行语句,将其所有非正元素设定为0

2、给定一实数矩阵A,请写一行语句,将其所有nan元素设定为0

3、给定一实数和复数交错的矩阵A,请写一行语句,将其所有复数元素设定为nan

4、请写一行语句,产生元素值为0或1的向量,向量长度为100,且出现0或1的概率各

占一半

M文件

1、编写一函数project1.m,其输出格式如下:out=project1(x,u)

其中x和u是维数相同的向量,out则是x在u方向的投影量的平方值

2、编写一函数quadzero.m,其输出格式如下:root=quadzero(coef)

其中coef是一个3X1的向量,代表一个一元二次方程式的系数(降序排列),而root

则是此方程式的根所形成的向量。若coef(1)不是0,则roots的长度为2。若coef(1)是

0 ,则可能有一解(root的长度为1)或无解(root为空矩阵) (请注意:你的程序

必须套用a*x*x+b*x+c=0的公式来解此题,而不可以直接使用roots命令来解此题)

3、由基本代数可知,一个实系数的一元三次方程式,必有一个实数解。请写一函数

trizero.m,其输出入的格式如下:root=trizero(coef)

其中coef是一个4X1的向量,代表一个一元三次方程式的系数(降序排列),而root则是

一个3X1的向量,代表此方程式的三个根。(为简化题目,我们假设coef(1)不为0,因此

一定会有三个根)

请参照下列步骤来编写你的程序:

(1)使用fzero命令来找出此方程式的实数根x1

(2)使用deconv命令来算出将此多项式除以(x-x1)后得到的商式

(3)使用前一个习题的函数来找出此商式的根

5、写一个MATLAB递归函数combinat.m,其功能是可对输入字符串进行组合。例如

“combinat(‘abcd’,2)”所返回的字符串矩阵是:ab ac ad bc bd cd

此字符串矩阵的每一行代表从输入字符串任取两个字符时,所有可能的组合。为求简

单起见,我们可假设输入字符串并没有重复的字符。

程序流程控制

给定一向量A,按其元素值不同,我们要印出不同信息。举例来说,当A=[-1,1,0,2+I]

6

时,你的程序代码应印出:

A(1)=-1是负数

A(2)=1是正数

A(3)=0是零

A(4)=2+I是复数

请用下列A来测试你的程序:A=randn(20,1)+(rand(20,1)>0.7)*I

线性代数

1、请按下列步骤进行此作业:

(1)使用randn产生一个10X10的矩阵A

(2)计算B=(A+A’)/2。请注意,B一定是一个对称矩阵

(3)计算矩阵B的特征向量e

1

e

2

… e

10

(4)验证在I不等于j的情况下,e

i

和e

j

的内积必定为0

2、我们可用数学证明:一个方阵的行列式值会等于其特征值的乘积。请随意产生10个

100X100的方阵来验证上述定理。

3、我们可用数学证明:一个方阵的主对角线的元素和,会等于其特征值的和。请随意产

生10个100X100的方阵来验证上述定理。

4、试用MATLAB的“左除”运算,找出最接近下列五点的最小二乘三次多项式:

(1,5)(2,3)(3,4)(4,7)(5,2) 请画出此多项式及这五点数据。

5、在xy平面上有三条曲线:2x-y=2 x-2y=-2x+y=1

试用MATLAB的“左除”找出一点P,使得P到三条直线的距离平方和为最小。

6、试用MATLAB的“左除”运算,找出下列联立方程式的最小二乘解:

3x+2y=1x+3y=44x+2y=3x-y=6

此时,最小二乘误差是多少?

多项式的处理与分析

1、试用roots命令算出

2、若向量v等于[

x

3

2x

x

1

0

的根。

2

x

2

,x,1]

T

,则上题的方程式可以写成下列矩阵方程式:A*v=x*v

换句话说,此时x就变成了A的特征值,而v则是A的特征向量。

(1)A是多少

(2)A的特征值为何?和第一题的答案是否相同?

3、试用residue命令来计算下列表达式的部分分式展开:

3

s

5s

2

2

(s

1)

3

(

s

1)

2

同时再利用residue命令,验算所得答案是否正确

4、若y=rand(0,1),请用一个9次的多项式,通过(I,y(i)),I=1~10,画出此多项式及十点

数据点。

一般数学函数的处理与分析

1、在XY平面上给定三点A、B、C,找出另外一点X,使得X到A、B、C三点的距

离和为最小。请写一个函数mindist.m解决上述问题,此函数的格式如下:

x=mindist(a,b,c),其中a、b、c为三点的坐标,x则是输出点的坐标,你必须使用

7

内插法

1、假设一曲线数据点为x=0:2:4*pi y=sin(x).*exp(-x/5)

试将x的间距调成0.1,并用下列方法进行内插:

(1)线性内插法(method=’linear’)

(2)样条内插法(method=’spline’)

(3)三次多项式内插法(method=’cubic’)

(4)多项式拟合法:直接利用6次多项式去通过7个数据点

请将这些内插法的结果及原先的数据点画在同一个图上

fminsearch命令来进行最优化。(1)当a=[4 0],b=[0 3 ],c=[0 0]时,mindist.m所返回

的x值是多少?对应的最短距离和是多少?(2)在上小题中,当最短距离和发生

时,角度axb,bxc,cxa各是多少?

2、在XY平面上给定一组向量x1,x2,…,xn,请找出另一向量u,使得这一组向量在u

方向的投影量平方和为最小。请写一个函数minproj.m解决上述问题,此函数的格

式如下:u=minproj(x),其中X的每一个横行即是向量xi,I=1,…n,而u是一个长度

为1的向量,代表最佳的投影方向。你必须使用fminsearch命令来进行优化。