• ps:本文为球球所写,特此声明~

# MATLAB 实验

# 第 1 部分 MATLAB 概论

# 第一题

与其他计算机语言相比较,MATLAB 语言突出的特点是什么?

MATLAB 具有功能强大、使用方便、输入简捷、库函数丰富、开放性强、矩阵运算强等特点。

# 第二题

MATLAB 系统由那些部分组成?

MATLAB 系统主要由开发环境、MATLAB 数学函数库、MATLAB 语言、图形功能和应用程序接口五个部分组成。

# 第三题

安装 MATLAB 时,在选择组件窗口中哪些部分必须勾选,没有勾选的部分以后如何补安装?

在安装 MATLAB 时,可以根据自己的需要选择安装内容,但基本平台 (即 MATLAB 选项) 必须安装。第一次安装没有选择的内容在补安装时只需按照安装的过程进行,只是在选择组件时只勾选要补装的组件或工具箱即可。

# 第四题

MATLAB 操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上?

在 MATLAB 操作桌面上有五个窗口,在每个窗口的右上角有两个小按钮,一个是关闭窗口的 Close 按钮,一个是可以使窗口成为独立窗口的 Undock 按钮,点击 Undock 按钮就可以使该窗口脱离桌面成为独立窗口,在独立窗口的 view 菜单中选择 Dock 菜单项就可以将独立的窗口重新放置到桌面上。

# 第五题

如何启动 M 文件编辑 / 调试器?

在操作桌面上选择 “建立新文件” 或 “打开文件” 操作时,M 文件编辑 / 调试器将被启动。在命令窗口中键入 edit 命令时也可以启动 M 文件编辑 / 调试器。

# 第六题

存储在工作空间中的数组能编辑吗?如何操作?

存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。

# 第七题

命令历史窗口除了可以观察前面键入的命令外,还有什么用途?

命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到 M 文件中。

# 第八题

如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别?

当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的 file 菜单中的 Set Path 菜单项来完成。在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被 MATLAB 运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上。

# 第九题

在 MATLAB 中有几种获得帮助的途径?

  1. 帮助浏览器:选择 view 菜单中的 Help 菜单项或选择 Help 菜单中的 MATLAB Help 菜单项可以打开帮助浏览器

  2. help 命令:在命令窗口键入 “help” 命令可以列出帮助主题,键入 “help 函数名” 可以得到指定函数的在线帮助信息

  3. lookfor 命令:在命令窗口键入 “lookfor 关键词” 可以搜索出一系列与给定关键词相关的命令和函数

  4. 模糊查询:输入命令的前几个字母,然后按 Tab 键,就可以列出所有以这几个字母开始的命令和函数

# 第 2 部分 MATLAB 矩阵运算基础

# 第一题

在 MATLAB 中如何建立矩阵 [573491]\begin{bmatrix}5&7&3\\4&9&1\end{bmatrix} 并将其赋予变量 a?

1
2
  
a = [5 7 3;4 9 1]

# 第二题

有几种建立矩阵的方法?各有什么优点?

①直接输入法,如 a=[2 5 7 3],优点是输入方法方便简捷;

②通过 M 文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改;

③由函数建立,如 y=sin (x),可以由 MATLAB 的内部函数建立一些特殊矩阵;

④通过数据文件建立,该方法可以调用由其他软件产生的数据。

# 第三题

在进行算术运算时,数组运算和矩阵运算各有什么要求?

进行数组运算的两个数组必须有相同的尺寸。进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵 a 与 b 相乘 (a*b) 时必须满足 a 的列数等于 b 的行数。

# 第四题

数组运算和矩阵运算的运算符有什么区别?

在加、减运算时数组运算与矩阵运算的运算符相同,乘、除和乘方运算时,在矩阵运算的运算符前加一个点即为数组运算

# 第五题

计算矩阵 [535374798]\begin{bmatrix}5&3&5\\3&7&4\\7&9&8\end{bmatrix}[242679836]\begin{bmatrix}2&4&2\\6&7&9\\8&3&6\end{bmatrix} 之和

1
2
3
4
  
a=[5 3 5;3 7 4;7 9 8];
b=[2 4 2;6 7 9;8 3 6];
a+b

# 第六题

x=[4+8i3+5i27i1+4i75i3+2i76i9+4i39i4+4i]x= \begin{bmatrix}4+8i&3+5i&2-7i&1+4i&7-5i\\3+2i&7-6i&9+4i&3-9i&4+4i\end{bmatrix}共轭转置

1
2
3
4
5
  
X=[4+8i 3+5i 2-7i 1+4i 7-5i;3+2i 7-6i 9+4i 3-9i 4+4i];
X0=X'
X1=conj(X.')
%x0 x1 两种方法均可

# 第七题

计算 a=[693275]a=\begin{bmatrix}6&9&3\\2&7&5\end{bmatrix}b=[241468]b=\begin{bmatrix}2&4&1\\4&6&8\end{bmatrix} 的数组乘积

1
2
3
4
  
a=[6 9 3;2 7 5];
b=[2 4 1;4 6 8];
a.*b

# 第八题

“左除” 与 “右除” 有什么区别?

数值计算时左除和右除没有区别,矩阵运算时 左除 (\) 相当于 A\B=inv (A)*B 右除 ( / ) 相当于 A/B=A*inv (B)

# 第九题

对于 AX=BAX=B 如果 A=[492764357]A=\begin{bmatrix}4&9&2\\7&6&4\\3&5&7\end{bmatrix} B=[372628]B=\begin{bmatrix}37\\26\\28\end{bmatrix} 求解 XX

1
2
3
4
  
A=[4 9 2;7 6 4;3 5 7];
B=[37;26;28];
A\B

# 第十题

已知 a=[123456789]a=\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix} 分别计算 aa 的数组平方和矩阵平方,并观察其结果

1
2
3
4
  
a=[1 2 3;4 5 6;7 8 9];
a.^2 % 数组平方
a^2 % 矩阵平方

# 第十一题

a=[125364]a=\begin{bmatrix}1&2&5\\3&6&-4\end{bmatrix} b=[874362]b=\begin{bmatrix}8&-7&4\\3&6&2\end{bmatrix} 观察 aabb 之间的六种关系运算的结果

1
2
3
4
5
6
7
8
9
  
a=[1 2 5;3 6 -4];
b=[8 -7 4;3 6 2];
a==b
a~=b
a>b
a>=b
a<b
a<=b

# 第十二题

a=[50.2080.7]a=\begin{bmatrix}5&0.2&0&-8&-0.7\end{bmatrix} 在进行逻辑运算时,aa 相当于什么样的逻辑量。

a = [1 1 0 1 1]

# 第十三题

在 sin (x) 运算中,x 是角度还是弧度?

弧度 如果使用角度运算的话使用 sind (x) 函数

# 第十四题

角度 x=[304560]x=\begin{bmatrix}30&45&60\end{bmatrix}xx 的正弦、余弦、正切和余切。

1
2
3
4
5
6
  
x=[30 45 60];
sind(x)
cosd(x)
tand(x)
cotd(x)

# 第十五题

用四舍五入的方法将数组 [2.45686.39823.93758.5042]\begin{bmatrix}2.4568&6.3982&3.9375&8.5042\end{bmatrix} 取整

1
2
3
  
a=[2.4568 6.3982 3.9375 8.5042];
round(a)

# 第十六题

将矩阵 a=[4275]a=\begin{bmatrix}4&2\\7&5\end{bmatrix} b=[7183]b=\begin{bmatrix}7&1\\8&3\end{bmatrix} c=[5962]c=\begin{bmatrix}5&9\\6&2\end{bmatrix} 组合成两个新矩阵

1
2
3
4
5
6
7
8
9
10
11
12
  
a=[4 2;7 5];b=[7 1;8 3];c=[5 9;6 2];
A=reshape(a,4,1);
B=reshape(b,4,1);
C=reshape(c,4,1);
X=[A B C]

a=[4 2;7 5];b=[7 1;8 3];c=[5 9;6 2];
A=reshape(a,1,4);
B=reshape(b,1,4);
C=reshape(c,1,4);
X=[A B C]

# 第 3 部分 M 文件编程

# 第一题

命令文件与函数文件的主要区别是什么?

(1)命令文件没有输入参数,也不返回输出参数, 而函数文件可以带输入参数,也可返回输出参数。
(2)命令文件对 MATLAB 工作空间中的变量进行 操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量, 当函数文件执行完毕时,这些变量被清除。
(3)命令文件可以直接运行,在 MATLAB 命令窗口输入命令文件的名字,就会顺序执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式来调用它。

# 第二题

如何定义全局变量?

1
2
  
global z % 将变量声明为全局变量 定义和使用时都需要使用

# 第三题

if 语句有几种表现形式?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  
% 第一种
if expression
statements
elseif expression
statements
else
statements
end
% 第二种
if expression
statements
end
% 第三种
if expression
statements
else
statements
end
% 第四种
if expression
statements
elseif expression
statements
end

# 第四题

说明 break 语句和 return 语句的用法。

break 会终止当前操作并返回 (没有返回值) 或跳出
return 也会终止操作并返回,但有返回值时会返回返回值

# 第五题

有一周期为 4π4\pi 的正弦波上叠加了方差为 0.10.1 的正态分布的随机噪声的信号,用循环结构编制一个三点线性滑动平均的程序。(提示:①用 0.1*randn (1,n) 产生方差为 0.10.1 的正态分布的随机噪声;②三点线性滑动平均就是依次取每三个相邻数的平均值作为新的数据,如x1(2)=x(1)+x(2)+x(3)3x_1(2)=\frac{x(1)+x(2)+x(3)}{3}\,\, x1(3)=x(2)+x(3)+x(4)3x_1(3)=\frac{x(2)+x(3)+x(4)}{3}\,\,\,\cdots

1
2
3
4
5
6
7
  
t=0:0.0001:2*pi;
y=sin(0.5*pi*t)+0.1*randn(1,length(t));
y1=zeros(1,length(y)-2);
for i=2:length(y)-1
y1(i)=(y(i-1)+y(i)+y(i+1))/3;
end

# 第六题

编制一个解数论问题的函数文件:取任意整数,若是偶数,则用 2 除,否则乘 3 加 1,重复此过程,直到整数变为 1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  
function func()
x=input('');
while x>1
if mod(x,2)==0
x=x/2;
else
x=x*3+1;
end
end
if x==1
disp('满足条件')
else
disp('不满足条件')
end
end

# 第七题

有一组学生的考试成绩(见表),根据规定,成绩在 100 分时为满分,成绩在 90~99 之间时为优秀,成绩在 80~89 分之间时为良好,成绩在 60~79 分之间为及格,成绩在 60 分以下时为不及格,编制一个根据成绩划分等级的程序。

学生姓名
成绩 72 83 56 94 100 88 96 68 54 65
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  
name=input('学生姓名: ','s');
score=input('学生成绩: ');
if score==100
level='满分';
elseif score>=90
level="优秀";
elseif score>=80
level="良好";
elseif score>=60
level="及格";
else
level="不及格";
end
disp(strcat(name,'的成绩等级为: ',level));

# 第 4 部分 绘图函数

# 第一题

绘制曲线 y=x3+x+1y=x^3+x+1xx 的取值范围是 [5,5][-5,5]

1
2
3
4
  
x=-5:0.2:5;
y=x.^3+x+1;
plot(x,y);

# 第二题

有一组测试数据满足 y=eaty=e^{-at} tt 的变化范围是 [0,10][0,10] 用不同的线型和标记点画出 a=0.1a=0.2a=0.1、a=0.2a=0.5a=0.5 三种情况下的曲线。

1
2
3
4
5
6
  
t=0:0.5:10;
y1=exp(-0.1*t);
y2=exp(-0.2*t);
y3=exp(-0.5*t);
plot(t,y1,'-ob',t,y2,':*r',t,y3,'-.^g')

# 第三题

在第二题结果图中添加标题 y=eaty=e^{-at} , 并用箭头线标识出各曲线 aa 的取值。

1
2
3
4
5
6
7
8
9
10
  
t=0:0.5:10;
y1=exp(-0.1*t);
y2=exp(-0.2*t);
y3=exp(-0.5*t);
plot(t,y1,'-ob',t,y2,':*r',t,y3,'-.^g')
title('\ity\rm=e^{\itat}');
text(t(6),y1(6),'\leftarrow\ita\rm=0.1','FontSize',11);
text(t(6),y2(6),'\leftarrow\ita\rm=0.2','FontSize',11);
text(t(6),y3(6),'\leftarrow\ita\rm=0.5','FontSize',11);

# 第四题

在第二题结果图中添加标题 y=eaty=e^{-at} 和图例框。

1
2
3
4
5
6
7
8
9
10
11
  
t=0:0.5:10;
y1=exp(-0.1*t);
y2=exp(-0.2*t);
y3=exp(-0.5*t);
plot(t,y1,'-ob',t,y2,':*r',t,y3,'-.^g')
title('\ity\rm=e^{\itat}');
text(t(6),y1(6),'\leftarrow\ita\rm=0.1','FontSize',11);
text(t(6),y2(6),'\leftarrow\ita\rm=0.2','FontSize',11);
text(t(6),y3(6),'\leftarrow\ita\rm=0.5','FontSize',11);
legend('a=-0.1','a=0.2','a=0.5');

# 第五题

表中列出了 4 个观测点的 6 次测量数据,将数据绘制成为分组形式和堆叠形式的条形图。

第 1 次 第 2 次 第 3 次 第 4 次 第 5 次 第 6 次
观测点 1 3 6 7 4 2 8
观测点 2 6 7 3 2 4 7
观测点 3 9 7 2 5 8 4
观测点 4 6 4 3 2 7 4
1
2
3
  
y=[3 6 9 6;6 7 7 7;7 3 2 1;4 2 5 2;2 4 8 7;8 7 4 4];
bar(y);
1
2
3
  
y=[3 6 9 6;6 7 7 7;7 3 2 1;4 2 5 2;2 4 8 7;8 7 4 4];
bar(y,'stack');

# 第六题

x=[6649715638]x=\begin{bmatrix}66&49&71&56&38\end{bmatrix} , 绘制饼图,并将第五个切块分离出来。

1
2
3
4
5
  
x=[66 49 71 56 38];
L=[0 0 0 0 1];
pie(x,L);
legend('66','49','71','56','38');

# 第七题

z=xex2y2z=xe^{-x^2-y^2} , 当 xxyy 的取值范围均为 [2,2][-2,2] 时,用建立子窗口的方法在同一个图形窗口中绘制出三维线图、网线图。

1
2
3
4
5
6
7
8
9
10
11
  
[x,y]=meshgrid([-2:.2:2]);
z=x.*exp(-x.^2-y.^2);
subplot(2,2,1);
plot3(x,y,z);
subplot(2,2,2);
mesh(x,y,z);
subplot(2,2,3);
surf(x,y,z);
subplot(2,2,4);
surf(x,y,z),shading interp;

# 第 5 部分 数值计算基础

# 第一题 展开成系数多项式

(x6)(x3)(x8)(x-6)(x-3)(x-8) 展开为系数多项式的形式。

1
2
3
4
5
  
a=[1 -6];
b=[1 -3];
c=[1 -8];
x=conv(conv(a,b),c)

# 第二题

求解 x37x2+2x+40=0x^3-7x^2+2x+40=0 的根。

1
2
3
  
a=[1 -7 2 40];
x=roots(a)

# 第三题

求解在 x=8x=8 时多项式 (x1)(x2)(x3)(x4)(x-1)(x-2)(x-3)(x-4) 的根。

1
2
3
4
5
6
7
  
a=[1 -1];
b=[1 -2];
c=[1 -3];
d=[1 -4];
e=conv(a,conv(b,conv(c,d)));
polyval(e,[8]);

# 第四题 多项式乘法

计算多项式乘法 (x2+2x+2)(x2+5x+4)(x^2+2x+2)(x^2+5x+4)

1
2
3
4
5
  
a=[1,2,2];
b=[1,5,4];
c=conv(a,b)
poly2sym(c)

# 第五题 多项式除法

计算多项式除法 (3x3+13x2+6x+8)/(x+4)(3x^3+13x^2+6x+8)/(x+4)

1
2
3
4
5
  
a=[3,13,6,8];
b=[1,4];
c=deconv(a,b)
poly2sym(c)

# 第六题 多项式的微分和积分

计算多项式 4x412x314x2+5x+94x^4-12x^3-14x^2+5x+9 的微分与积分。

1
2
3
4
5
6
  
a=[4,-12,-14,5,9];
b=polyder(a);
c=polyint(a);
poly2sym(b)
poly2sym(c)

# 第七题

解方程组 [2903411226]\begin{bmatrix}2&9&0\\3&4&11\\2&2&6\end{bmatrix}x=\begin{bmatrix}13\\6\\6\end

1
2
3
4
  
a=[2 9 0;3 4 11;2 2 6];
b=[13;6;6];
x=a\b

# 第八题 最小二乘法 线性拟合

有一组测量数据如下表所示,数据具有 y=ax2+bx+cy=ax^2+bx+c 变化趋势,用最小二乘法求解系数。

x 1 1.5 2 2.5 3 3.5 4 4.5 5
y -1.4 2.7 3 5.9 8.4 12.2 16.6 18.8 26.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  
x=[1:0.5:5]';
y=[-1.4;2.7;3;5.9;8.4;12.2;16.6;18.8;26.2];
temp=[ones(size(x)),x.^2,x];
A=temp'*temp;
B=temp'*y;
C=inv(A)*B
%C=temp\y;以上3行可用此替代
plot(x,y,'o');
hold on
x0=[1:0.1:5]';
A1=[ones(size(x0)),x0.^2,x0];
y1=A1*C;
plot(x0,y1,'r')

# 第九题

矩阵 a=[426754349]a=\begin{bmatrix}4&2&-6\\7&5&4\\3&4&9\end{bmatrix} 计算 aa 的行列式和逆矩阵

1
2
3
4
  
a=[4 2 -6;7 5 4;3 4 9];
d=det(a)
a0=inv(a)

# 第十题

y=sin(x)y=\sin(x) xx002π2\pi ,Δx=0.02π\Delta x=0.02\pi , 求 yy 的最大值、最小值、均值和标准差

1
2
3
4
5
6
7
  
x=0:0.02*pi:2*pi;
y=sin(x);
max(y)
min(y)
mean(y)
std(y)

# 第十一题

有一正弦衰减数据 y=sin(x).ex10y=\sin(x).*e^{-\frac{x}{10}} , 其中 x=0:π5:4πx=0:\frac{\pi}{5}:4\pi , 用插值求 x=0:π20:4πx=0:\frac{\pi}{20}:4\pi 的值。(选三次样条)

1
2
3
4
5
6
  
x=0:pi/5:4*pi;
y=sin(x).*exp(-x/10);
x1=0:0.1:4*pi;
y1=spline(x,y,x1);
plot(x,y,'-or',x1,y1,'k');

# 第 6 部分 符号数学基础

# 第一题

创建符号变量有几种方法?

两种。

sym 函数用于创建符号变量或者表达式 (表达式新版要使用 str2num 函数)

1
2
  
x=sym('x')
1
2
  
f=str2sym('x+y+z')

syms 可以创建多个符号变量

1
2
3
  
syms x y z
f=x+y+z

# 第二题

下面三种表示方法有什么不同的含义?

1
2
  
f=3x^2+5x+2%给定x后将数值计算结果赋值给x
1
2
  
f='3x^2+5x+2'%f是字符串变量,没有计算含义
1
2
3
  
x=sym('x')
f=3*x^2+5*x+2%x是一个符号变量,f自然也成为符号变量。算式有符号函数意义

# 第三题

用符号函数法求解方程at2+bt+c=0at^2+bt+c=0

1
2
3
4
  
syms a b c x
f=sym('a*x*x+b*x+c=0')
solve(f)
1
2
3
4
5
  
syms a b c x
f=sym(a*x*x+b*x+c==0)
solve(f)
solve(f,a)%关于a的解

# 第四题

因式分解:x45x3+5x2+5x6x^4-5x^3+5x^2+5x-6

1
2
3
4
5
6
  
syms x
f=x^4-5*x^3+5*x^2+5*x-6
g=x^6+1
factor(f)
factor(g)

# 第五题

f=[ax21xeaxlog(x)sin(x)]f=\begin{bmatrix}a&x^2&\frac{1}{x}\\e^ax&log(x)&sin(x)\end{bmatrix} , 用符号微分求\frac{df}

1
2
3
4
  
syms a x
f=[a x^2 1/x;exp(a*x) log(x) sin(x)];
diff(f,x)

# 第六题

求代数方程组 {ax2+by+c=0x+y=0\begin{cases}ax^2+by+c=0\\x+y=0\end{cases} 关于 x,yx,y 的解

1
2
3
  
syms x y a b c
[x,y]=solve(a*x^2+b*y+c==0,x+y==0)

# 第七题

符号函数绘图法绘制函数 x=sin(3t)cos(t),y=sin(3t)sin(t)x=\sin(3t)\cos(t),\,\,y=\sin(3t)\sin(t) 的图形,tt 的变化范围为 [0,2π][0,2\pi]

1
2
3
4
5
  
syms t
x=sin(3*t)*cos(t);
y=sin(3*t)*sin(t);
ezplot(x,y,[0,2*pi])