《MATLAB程序设计》复习

《MATLAB程序设计》复习
《MATLAB程序设计》复习

Matlab习题及复习要点

1.Matlab的英文组成;程序和变量的命名规则;

在MATLAB语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。

2.Matlab中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp”目录中有脚本文件abc.m,若要能在命令窗口输入abc执行则..);

3.熟悉Matlab中的几种数据类型(int8、double、logical等);

4.在MATLAB中计算数学公式(如三角函数、对数、开根号等)的表达;

5.掌握数组的几个操作(裁剪、扩增、eye、zeros等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符;

6. 在循环结构中的几个命令:break、continue等;

7. 已知字符'A'、'Z'、'a'、'z'的ASCII码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。

Ax b可采用什么指令;

8. 在MATLAB中求解线性方程组

9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别

10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1)

11. 掌握集中循环结构,尤其if..elseif…else…end和swich…case结构的语法,要准确。

12. 会编写分段函数的程序;

x和y满足如下关系:

编写函数y=f(x),用于计算上述分段函数。

13. 绘图时采用的几个命令的掌握:hold on、plot、plot3

14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下:

示例一:

x=-3:1:3;y=-2:1:2;

[X,Y]=?meshgrid(x,y);

这里meshgrid(x,y)的作用是分别产生以向量x为行,向量y为列的两个大小相同的矩阵,其中x的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X;同理y的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y。即X=

-3 -2 -1 0 1 2 3

-3 -2 -1 0 1 2 3

-3 -2 -1 0 1 2 3

-3 -2 -1 0 1 2 3

-3 -2 -1 0 1 2 3

Y =

-2 -2 -2 -2 -2 -2 -2

-1 -1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0

1 1 1 1 1 1 1

2 2 2 2 2 2 2

15*. 创建一个范围为[-π, π]、数据点个数为50的向量x的指令为?,以该向量x为横坐标绘制正弦曲线的指令为?。

16*. 掌握基本的画图命令,会编写简单的绘图程序。

思考题:已知几个点的坐标a1(-1,0)、a2(0,1)、a3(1,2)、a4(3,-2),求一条三次曲线通过这四个点,编写程序完成计算,要求显示出多项式的系数,并用plot函数画出曲线

第一讲概论

1.简述matlab基本特点。(0.5分)

交互式操作界面;高效的数值计算功能;演算式语言;可视化输出;代码、数据文件的集成管理环境;支持用户界面开发,自定义创建工具(GUIDE);丰富的外部接口——支持C/C++、Java、Excel/Word、Ansys,COM、DDE(动态数据交换)和ActiveX……。

2.简述matlab的基本功能。(0.5分)

数学计算;开发工具;数据可视化;交互式图形编辑;自成一派的算法开发编程语言和环境;图形用户界面开发环境——GUIDE;开放性、可扩展性强;专业应用工具箱;Simulink 动态仿真环境。

3.填空(1分)

命令后以分号(;)结尾,不显示运行结果。

命令后无符号或逗号(,)结尾,显示运行结果。

一行输入多条命令,可用逗号(,)分隔;

若一行很长需换行时,加续行符(3小数点…)

注释文字以百分号(%)开始

所有符号一定要在英文状态下输入

4.如何将当前路径设置为d:\mydir?如何将d:\mydir添加进搜索路径?(1分)

5.请写出如下操作的命令:(2分)

清屏:clc;

删除工作空间的变量a:clear a;

清空工作空间:clear 或clear all;

删除命令行:esc;

查询函数sin的帮助文档:help sin;

1.分别用直接输入法和存储变量法求1+cos(pi)*(2+2i)。

直接输入法:>>1+cos(pi)*(2+2i);

存储变量法:

>>a=cos(pi);

>>b=2+2i;

>>c=1+a+b;

2.a=int8(100),b=int8(50)

a+b=127;

a-b=50;

a-3b=-27;

2a-b=77;

a/3b=1;

3.a=int8(10),b=int16(10),a+b=?(出错)

4.请写出计算代码

a4

b

+; sqrt(a+4*b);

lg(a+b); log10(a+b);

a

b

e+; exp(a+b);或e^(a+b);

Sin(a+b2); sin(a+b^2);

5.给出以下计算结果

4<5; 1

4>5; 0

4==20; 0

4~=20; 1

4<5&&4>5; 0

第三讲数组

1.生成一个3*3随机矩阵,将其对角线元素的值加1。(写出代码)

rand(3)+eye(3)

1.生成一个元素值在1和10之间的3*3随机矩阵,将其重新排列,使得:

(1)每列按降序排列;(2)每行按降序排列。

(1)sort(rand(3)*10,'descend')

(2)sort(rand(3)*10,2,'descend')

2.令a=3,x=[2,1;3,2],y=[4,5;6,7],写出如下式子的计算结果:

(1)a.^x=[9,3;27,9];

(2)x.^a=[8,1;27,8];

(3)x.^y=[16,1;729,128].

3.生成3*4随机矩阵,判断其元素是否大于0.5。(写出代码)

rand(3,4)>0.5

4.有a=3,B=[4,3;7,5],C=[8,9;7,6],D=[4,7;12,8],写出如下式子的计算结

果:

(1)~(a

(2)a>C&B

(3)C<=D=[0,0;1,1].

(10)已知A为如下4*4矩阵:

则运行B=A([1:2],[1:2])后,B为 2 行 2 列矩阵,其值为__[1 2;5 6]_______。

(5) 能够产生4阶单位矩阵的表达式eye(4) 。

(13) MATLAB中产生对角元素为1,2,3,4,5的对角矩阵可用指令diag(1:5) ,产生5个元素值在区间[1,5]上的均匀分布的随机向量可用指令4*rand(1,5)+1 。

(15) 创建一个范围为[-2π, 2π]、数据点个数为50的向量x的指令为linspace(-2*pi,2*pi,50) ,以该向量x为横坐标绘制正弦曲线的指令为plot(x,sin(x)) 。

(16)b=round(rand(3)*10)round为四舍五入函数

b =

8 7 5

3 2 10

7 1 3

求共轭转置矩阵的指令为B’

Ones(n) 返回N*N全为1的矩阵

arr =

1 2 3 4

3 4 5 6

1 2 3 4

>> length(arr) ans = 4 返回二维数组最大的那一维数

>> size(arr) ans = 3 4 返回矩阵的行数和列数

第四讲字符串

1.生成包含内容为“Hefei University of Technology”字符串str,并显示其

内容(仅显示内容,不显示字符串名称)。

2.生成一个两行的字符串,第一行内容为“Hefei University of

Technology”,第二行内容为“Welcome!”

3.写出:str=['k',int2str(1),'=rand']和eval(str)的运行结果。

4.定义一个2*2的单元数组A,并令A(2,2)为一3*3的随机二维数组,并显示

A(2,2)的内容。

5.创建一个结构体,并将存入如下数据:

1)name:liuying,height:170;2)name:liyi,height:165.

第四讲字符串

1.生成包含内容为“Hefei University of Technology”字符串str,并显示其

内容(仅显示内容,不显示字符串名称)。

str='Hefei University of Technology';disp(str);

2.生成一个两行的字符串,第一行内容为“Hefei University of

Technology”,第二行内容为“Welcome!”

str=char('Hefei University of Technology','Welcome!');

3.写出:str=['k',int2str(1),'=rand']和eval(str)的运行结果。

k1=0.8174

4.定义一个2*2的单元数组A,并令A(2,2)为一3*3的随机二维数组,并显示

A(2,2)的内容。

A(2,2)={rand(3)};A{2,2}

5.创建一个结构体,并将存入如下数据:

1)name:liuying,height:170;2)name:liyi,height:165.

person=struct('name',{'liuying','liyi'},'height',{170,165})

(1)y=x*sin(x),0

(2)三维曲线:z=x^2+6xy+y^2+6x+2y-1,-10

2.编写程序,该程序在同一窗口中绘制函数在[0,2*pi]之间的正弦曲线和余弦曲线,

步长为pi/10,线宽为4个像素,正弦曲线设置为蓝色实线,余弦曲线设置为红色虚线(思考两条曲线交点处,用红色星号标记,如何实现)。

(1)y=x*sin(x),0

x=[0:pi/10:10*pi];

y=x.*sin(x);

plot(x,y);

title('y=x*sin(x)');

xlabel('x');

ylabel('y=x*sin(x)');

legend('y=x*sin(x)');

(2)三维曲线:z=x^2+6xy+y^2+6x+2y-1,-10

x=[-10:0.1:10];

y=[-10:0.1:10];

z=x.^2+6.*x.*y+6.*x+2.*y-1;

plot3(x,y,z);

title('z=x^2+6*x.*y+6*x+2*y-1');

xlabel('x');

ylabel('y');

zlabel('z=x^2+6*x.*y+6*x+2*y-1');

legend('z=x^2+6*x.*y+6*x+2*y-1');

2.编写程序,该程序在同一窗口中绘制函数在[0,2*pi]之间的正弦曲线和余弦曲线,

步长为pi/10,线宽为4个像素,正弦曲线设置为蓝色实线,余弦曲线设置为红色虚线(思考两条曲线交点处,用红色星号标记,如何实现)。

clc;

clear;

x=[0:pi/1000:2*pi];

y1=sin(x);

y2=cos(x);

plot(x,y1,'b');

hold on

plot(x,y2,'r--');

for i=1:1:length(x)

delt=abs(y1(i)-y2(i));

if delt<=1e-10

hold on

plot(x(i),y1(i),'r*');

end

end

1. 编写程序计算()???<+-≥+=0

,50,522x x x x x f 的值,其中x 的值为-10到10之间,以0.5为步长,并绘出图形。用两种方法实现。

2. 编写一个函数randomn ,该函数能够产生[-n,n]之间的任意整数。

1. 编写程序计算()???<+-≥+=0

,50,522x x x x x f 的值,其中x 的值为-10到10之间,以0.5为步长,并绘出图形。用两种方法实现。

xth=0;

for x=-10:0.5:10

xth=xth+1;

X(xth)=x;

if x<0

y(xth)=-x^3+5;

else

y(xth)=x^3+5;

end

end

xth=0;

for x=-10:0.5:10

xth=xth+1;

nx=x<0;

switch nx

case 1

y(xth)=-x^3+5;

case 0

y(xth)=x^3+5;

end

end

2. 编写一个函数randomn ,该函数能够产生[-n,n]之间的任意整数。

function y=randomn(n)

y=round(rem(random('Normal',0,1),1)*n);

function y=randnn(n)

y=round((-1+2*rand(1))*n);

生成5阶魔术矩阵:

生成5阶单位阵:

生成以向量A为对角线元素的矩阵:

求矩阵B的对角阵:

2.写出求解如下非齐次线性方程组的代码:

AX=B;

XA=B;

生成5阶魔术矩阵:magic(5)

生成5阶单位阵:eye(5)

生成以向量A为对角线元素的矩阵:diag(A) 求矩阵B的对角阵:diag(B)

2.写出求解如下非齐次线性方程组的代码:

AX=B; X=A\B

XA=B; X=B/A

相关主题
相关文档
最新文档