前言
本人初次学习MATLAB,下面主要介绍一下MATLAB运行的基础代码以及入门练习的一些基础问题。
一、实验目的
1. 熟悉MATLAB环境,并能简单设置工作环境。
2. 熟悉MATLAB的工作界面,了解各个窗口的功能。
3. 重点掌握指令窗的基本操作方式和常用操作指令。
二、实验内容
1. MATLAB操作界面的组成:
指令窗、历史指令窗、当前目录浏览器、工作空间浏览器(观察、编辑工作空间中的变量)、内存数组编辑器(用于大数组的输入)、交互界面分类目录窗、M文件编辑或调试器、帮助导航或浏览、图形窗口、演示窗口。
2.变量命名规则:
A、变量名须以字母开头,可由字母、数字、下划线组成,不能含有空格、运算符、标点符号。
B、长度≤63个字符,第63个字符后的字符被忽略
3.预定义变量:
指令 | 说明 |
---|---|
ans | 缺省计算结果 |
pi | 圆周率 |
i或j | 虚单元 |
eps | 机器零阀值 |
Inf或inf | 无穷大 |
NaN或nan | 非数 |
4.复数的两种表示:c=a+ib或c=aexp(i*b)
5.复数z的指令转化:
指令 | 说明 |
---|---|
real(z) | 求z的实部 |
image(z) | 求z的虚部 |
abs(z) | 求z的模 |
angle(z) | 求z的相角(弧度制) |
6.注意区分“.”和“”的区别,其中“.*”表示乘法是在两个数组相同位置上的元素之间进行的,称为数组乘。
7.一个矩阵在MATLAB中的不同输入方法,例如:
A、a=[1,2;3,4]
B、a=[1 2;3 4]
C、a=[1 2 %隔一行来代替分号
3,4]
8. 数组三要素:方括号,逗号,分号
9. 标点符号的作用:
指令 | 说明 |
---|---|
, | 显示结果的指令结尾;输入量分隔;数组元素分隔 |
; | 不显示结果指令的结尾;数组行分隔 |
. | 小数点 |
: | 生成一位数组;作下标表示该维 |
% | 注释行标志 |
‘’ | 字符串标记 |
() | 数组援引 |
[] | 输入数组 |
{} | 元胞数组标记符 |
- | 变量名连字符 |
… | 续行号 |
@ | 函数句柄;用户对象类目录 |
10. 指令窗的操作显示:
指令 | 说明 |
---|---|
cd | 设置当前工作目录 |
dir | 列指定目录下文件清单 |
edit | 打开M文件编辑器 |
md | 创建目录 |
more | 使其后内容分页显示 |
type | 显示指示M文件内容 |
clf | 清楚图形窗 |
clc | 清除指令窗的显示内容 |
clear | 清除工作空间 |
exit/quit | 退出MATLAB |
11. 用clear指令删除内存中变量的用法:
指令 | 说明 |
---|---|
clear | 删除内存中的所有变量 |
clear v1 v2 | 删除内存中的变量v1,v2 |
三、仿真结果
1.设a=-8,运行以下三条指令,问运行结果相同吗?为什么?三个指令分别为:
v
1
=
a
(
2
/
3
)
;
v
2
=
(
a
2
)
(
1
/
3
)
;
v
3
=
(
a
(
1
/
3
)
)
2
v_1=a^{(2/3)};v_2=(a^2)^{(1/3)};v_3=(a^{(1/3)})^2
v1=a(2/3);v2=(a2)(1/3);v3=(a(1/3))2
答:运行的结果不同。原因:v1和v3是对复数(-8)的立方运算,MATLAB中识别出来的是复数,而v2是对正数(16)的立方运算,MATALB中识别出来的是实数。
>> a=-8;
>> v1=a^(2/3),v2=(a^2)^(1/3),v3=(a^(1/3))^2
v1 =
-2.0000 + 3.4641i
v2 =
4.0000
v3 =
-2.0000 + 3.4641i
2.负数
z
1
=
4
+
3
∗
i
,
z
2
=
1
+
2
∗
i
,
z
3
=
2
∗
e
x
p
(
p
i
/
6
∗
i
)
z_1=4+3*i,z_2=1+2*i,z_3=2*exp(pi/6*i)
z1=4+3∗i,z2=1+2∗i,z3=2∗exp(pi/6∗i)表达,及计算
z
=
z
1
∗
z
2
/
z
3
z=z_1*z_2/z_3
z=z1∗z2/z3.
答:
>> z1=4+3*i,z2=1+2*i,z3=2*exp(pi/6*i)
z1 =
4.0000 + 3.0000i
z2 =
1.0000 + 2.0000i
z3 =
1.7321 + 1.0000i
>> z=z1*z2/z3
z =
1.8840 + 5.2631
3.在MATLAB中运行指令
(
−
8
)
(
1
/
3
)
(-8)^{(1/3)}
(−8)(1/3)后,会得到-2吗?
(
−
8
)
(
1
/
3
)
(-8)^{(1/3)}
(−8)(1/3)的全部方根有几个?写出计算
(
−
8
)
(
1
/
3
)
(-8)^{(1/3)}
(−8)(1/3)全部方根的M脚本文件。
答:在MATLAB中运行指令
(
−
8
)
(
1
/
3
)
(-8)^{(1/3)}
(−8)(1/3)后,不会得到-2,结果是1.0000 + 1.7321i。它的全部方根有3个,分别为1.0000 + 1.7321i,-2.0000 + 0.0000i,1.0000 - 1.7321i。计算
(
−
8
)
(
1
/
3
)
(-8)^{(1/3)}
(−8)(1/3)全部方根的M脚本文件为:
>> a=-8;
m=[0,1,2];
R=abs(a)^(1/3);
Theta=(angle(a)+2*pi*m)/3;
r=R*exp(i*Theta)
4.对复数数组
A
=
[
1
−
5
∗
i
,
3
−
7
∗
i
;
2
−
6
∗
i
,
4
−
8
∗
i
]
A=[1-5*i,3-7*i;2-6*i,4-8*i]
A=[1−5∗i,3−7∗i;2−6∗i,4−8∗i]进行求实部、虚部、模和幅角的运算。
答:
>> A=[1-5*i,3-7*i;2-6*i,4-8*i];
a=real(A),b=imag(A),c=abs(A),d=angle(A)
a =
1 3
2 4
b =
-5 -7
-6 -8
c =
5.0990 7.6158
6.3246 8.9443
d =
-1.3734 -1.1659
-1.2490 -1.1071
5.
A
=
[
1
,
2
;
3
,
4
]
;
B
=
[
5
,
6
;
7
,
8
]
A=[1,2;3,4];B=[5,6;7,8]
A=[1,2;3,4];B=[5,6;7,8],求
A
∗
B
A*B
A∗B和
A
.
∗
B
A.*B
A.∗B,并分析两者的不同。
答:
>> A=[1,2;3,4];B=[5,6;7,8];
a=A*B,c=A.*B
a =
19 22
43 50
c =
5 12
21 32
不同:A*B是矩阵之间的乘法元素;而A.*B是两个数组相同位置上的元素之间的运算。
四、实践中遇到的问题及解决方法
1.问题:一开始在指令窗书写过长程序时,已完成行的程序不能直接更改,需要重新编辑,非常不方便。
解决方法:将过长程序在编辑器中编写完成后,然后在复制到指令窗
2.问题:自变量是矩阵时,举个例子:x=-10:10,运算sin(x)/x时,总是用“/”,经常导致指令窗报错矩阵维度不同
解决方法:应该用“./”,进行对应数组间数的单独运算
3.问题:在指令窗上运算时,clear和clc的功能经常弄混
解决方法:多练习,记住clc:清除指令窗的显示内容;clear:清除工作空间。