MATLAB学习指南
第1章.基本MATLAB指令
1.1.基本数量运算
首先,我们来谈一谈怎样向程序中添加注释(例如此行)。
注释就是我们向程序中添加的文字,用来解释我们在做什么。
所以,如果我们或其他人以后读到此代码,就能很容易地理解代码在执行什么指令。
在一个MATLAB文件中,如果百分号%出现在一行文字中,百分号后面的所有文字都是注释,而不是MATLAB想要进行解释的指令。
首先,我们向屏幕输入信息,告诉计算机我们开始运行1.1节。
指令disp('字符串')在屏幕上展示了文本字符串。
接下来,我们令一个变量等于1。
如果x没有被声明,这一指令先为变量x在内存中分配一个空间,然后又将x的值1存储在所分配的空间中。
同时,这一指令会将"x = 1"显示在屏幕上。
通常,我们不希望像这样的输出结果把屏幕弄得杂乱,所以我们在指令的最后加上一个分号就可以使指令变得“不可见”。
例如,我们使用下列指令把x的值“不可见地”变为2,然后将结果显示在屏幕上。
x=2;x的值发生了改变,但是却没有显示在屏幕上 disp('我们已经改变了x的值');
然后,通过输入“x”,不带分号,我们显示x的值。
现在,我们来看如何声明其它变量。
y=2*x; 对y的值进行初始化,使其等于x的值的2倍。
x=x+1;使x的值增加1。
z=2*x; 声明了另一变量z。
因为在声明变量z时x的值已经发生了变化,所以z不等于y。
接下来,我们想看存储在内存中的变量的列表。
我们使用指令“who”来实现。
通过使用“whos”我们能得到更多的信息
我们也可使用这些指令来得到有关仅有的某些变量的信息。
我们想要去掉变量“差”。
使用指令“clear”来实现。
接下来,我们想要去掉变量x和y。
我们再次使用指令“clear”。
一般来说,好的程序设计模式都要求每行只编写一个指令;但是,MATLAB却允许将多个指令放在一行。
更普遍的情况是,由于语句结构的长度使得我们希望一个指令能够分成多行。
这可通过使用3个点来实现。
最后,当使用指令“clear all”时,我们可一次去掉所有变量。
1.2.基本向量运算
声明一个变量最简单的,但不值得推荐的方法就是逐一输入其分量。
x显示x的值
一般来说,最好一下子声明一个变量,因为这样的话MATLAB从一开始就知道它需要分配多少内存。
对于大型向量,这会更加有效。
y=[1 4 6] 与上述代码作用相同。
注意到这次声明了一个行向量。
为得到一个列向量,我们或者使用转置(复合x的伴随矩阵)算符xT=x’;把实行向量x进行转置,或从一开始就将其变成列向量。
为了看到行向量和列向量在大小上的不同,使用指令“size”便可返回向量或矩阵的大小。
指令length既可用于行向量又可用于列向量。
向量相加减的运算与数量相加减的运算类似。
用一个标量乘以一个向量同样简单明了。
我们也可使用.算符来告诉MATLAB在元素的基础上进行给定的运算。
我们想设定y(i)=2*x(i)+z(i)^2+1中y的每个值。
我们使用下面的代码来完成。
两个向量的点积和叉积可由下面的代码来计算
我们也可使用符号[a:d:b]来定义一个向量。
这就会产生一个向量
a,a+d,a+2*d,a+3*d,…直到我们得到一个整数n使得a+n*d>b。
看两个例子。
如果我们想要得到一个在a和b之间有N个均匀分布的点的向量,我们就使用指令“linspace(a,b,N)”。
有时,我们在程序的后半阶段才能使用到某一向量,但是,我们却想在一开始就将向量值初始化为零,因为这样做能够分配内存将其存储。
通过使用代码
v=linspace(0,0,100)’;来实现。
为零列向量分配内存。
最后,我们可以使用整数计数变量来访问矩阵中的一个或多个元素。
1.3.基本矩阵运算
我们可以声明一个矩阵并且直接给出矩阵值。
我们也可以使用逗号来分开一行中的元素。
我们可用行向量构建一个矩阵
或用列向量,
联合几个矩阵可创造出更大的矩阵。
我们可以从一个矩阵中提取出行或列向量。
或者,通过提取出元素的一个子集来生成一个向量或另一个矩阵。
使用 ’ 算符可以得到实矩阵的转置阵。
对于一个复合矩阵,’返回得到伴随矩阵(转置和共轭)。
通过使用“transpose only”指令可以去掉共轭运算。
除数量和向量变量之外,“who”指令把矩阵编入列表。
另外,如果我们想要看到每个变量的大小,使用“whos”指令。
这一指令就会告诉我们每个变量的大小以及每个变量所需要的内存存储空间的大小。
指令“size”告诉我们一个矩阵的大小。
矩阵的加法,减法和乘法简单明了。
声明矩阵的方法有很多种。
我们来构建一个m行n列的矩阵,所有元素都为零
如果我们想要构建一个N×N的方阵,我们仅需使用一个指数。
我们创造一个恒等矩阵,主对角线上的元素为1,其余元素均为0。
最后,我们使用.算符对元素逐一地进行运算,就像我们在基本向量运算中所做的那样。
下列指令创造了矩阵C,其元素C(i,j)=2*A(i,j)+(B(i,j))^2。
从内存中清除矩阵及其它所有变量。
1.4.使用字符串
在MATLAB中,当输出结果时,我们经常想用文字来解释输出的结果。
在这方面,字符串是非常有用的。
在MATLAB中,字符串写在单引号内。
如果要把撇号放在字符串中,我们需要将它重复两次以避免与结束字符串的 ’ 算符混淆。
我们也可将字符串相结合,这与数字向量的结合,数字矩阵的结合很相似。
可以看到它不包括空格,所以我们改用下列代码
使用指令“int2str”,我们可将整数转化为字符串。
同样,使用指令“num2str(number,k)”,我们可以转化k位字符串的浮点数。
1.5. 基本数学运算
求幂指令
我们已经看到怎样进行数字的加法,减法和乘法。
我们也偶尔用到^算符,x^y表示y个x相乘(y是x的幂次)。
平方根运算有其自己的代码。
用于分析数字符号的算符包括
用于指数和对数计算的指令是
三角形指令
pi()π的数值可被直接调用。
注意:MATLAB计算的角度用弧度表示。
标准的三角函数是:
它们的反函数是:
双曲线函数是:
其反函数是:
这些算符能以下列方式和向量一起使用。
舍入运算
round(x): 返回与实数x最接近的整数
fix(x): 返回在对着0的方向上与x最接近的整数floor(x): 返回小于或等于x的且与x最接近的整数ceil(x): 返回大于或等于x的且与x最接近的整数rem(x,y): 返回整数除法x/y的余数
mod(x,y): 计算模量,实数除法所得的余数
复数
声明一个复数,-1的平方根用i(或j)来表示。
对于复矩阵,’ 算符用来计算伴随阵,即,将矩阵转置并取每个元素的共轭值。
坐标转换
通过下列代码将二维极坐标()r,θ与笛卡儿坐标联系起来
通过下列代码可从笛卡儿坐标得到三维球面坐标()r,,θα。