Matlab Tutorial

"Hello World, Hello Blog"

Posted by Leonard Yuan on December 2, 2016

第一章、Matlab学习

第一节、基本的语法学习

1.矩阵

  • 矩阵一共有两种方法去建立,方法一采用a=[1,2,3;4,5,6;7,8,9]的方式建立,方法二采用换行的方式进行,如下:

    a=[1,2,3 4,5,6 7,8,9]

  • 使用a(:)可以建立按列叠加起来的长向量;

  • 可以用rand(size)建立大小为size*size的空矩阵;

-

2.常用的几个常量

ans      用于结果的缺省变量名
pi       圆周率
eps      计算机的小数
flops    浮点运算次数
inf      无穷大  如 1/0 NaN      
不定量  如 0/0
i(j)   i=j= 1 −
nargin 所用函数的输入变量数目
nargout  所用函数的输出变量数目
realmin  小可用正实数
realmax  大可用正实数

3.矩阵的共轭

对矩阵求转置时,采用右上角加撇号的方式,就可以求得该矩阵的共轭转置矩阵;

如:

z=1 2 3
  4 5 6
  7 8 9
则z的转置矩阵为z':
z'=1 4 7
   2 5 8
   3 6 9

4.对工作台内变量信息进行访问

who       执行该命令可列出工作空间的所有变量;
whos      显示所有的变量,变量的元素个数和所占的字节数等;
size(a)   执行该命令可以得到矩阵 a 的行数与列数;
length(a) 执行该命令后,屏幕上显示出向量 a 的长度。如果 a 是矩阵,则显示的 参数为行数列数中的大者。

5.结构数组的用法

(1).结构数组用于存储某元素不同属性及其属性对应的值,其有两种构造方法:

  • 方法一:采用直接赋值的方式,如对于元素student,可以采用student.name='John'对其进行赋值;

  • 方法二:可以使用函数struct定义的方式来定义结构数组:如,结构数组名=struct(‘属性 1’,’属性值 1’, ‘属性 2’,’属性值 2’,…)

(2).可以对结构数组采取的操作

结构数组的有关函数
struct 			生成和转换为结构数组
fieldnames 		查询结构数组的属性名
getfield 		查询结构数组的属性值
setfield 		设置结构数组的属性值
rmfield 		删除属性
isfield			检查是否为数组的属性
isstruct 		检查数组是否为结构型

6.细胞数组

细胞数组也是 MATLAB 里的一类特殊的数组。在 MATLAB 里,由于有细胞数组这个数 据类型,才能把不同类型、不同维数的数组组成为一个数组。

(在此处,细胞数组可以将所有的数据类型都整合到一起,如向量、数组、结构数组,多维数组、字符串等等。)

(1).建立细胞数组的方式:

方法一:直接输入对细胞数组中各个元素的定义:

A(1,1)={[1:5;6:10]}
A(1,2)={'Anne cat'}
A(2,1)={3+7i}
A(2,2)={0:pi/10:pi} 方法二:使用cell对细胞数组进行定义,等到使用时可以具体对细胞数组中的各个位置进行赋值,如:

B=cell(3,4)
(此处建立了大小为3*4的细胞数组)

(2).对细胞数组中元素的查看

对细胞数组中的元素进行查看时,大括号{ }括起来的下标为细胞数组的第几个元素,用圆括号()括起来的下标为大括号{ }对应的某个元素的分量。如 :

A{2,2}(1) ------------表示细胞数组A中{2,2}上的元素其1号位置的值;
A{3}(1)   ------------表示细胞数组A从左上角开始沿列数第3个元素,其1号位置的值;

(3).对细胞数组的操作

在细胞数组中,可以使用如下的函数进行细胞数组进行操作,包括建立、检索、检测等,具体的函数如下:

celldisp 显示细胞数组的内容  ---------------------celldisp(细胞数组名)
cell 生成细胞数组
cellplot 用图形方式显示细胞数组
num2cell 把数值型转换为细胞型
deal 输入和输出的匹配
cell2struct 把细胞数组转换为结构数组
struct2cell 把结构数组转换为细胞数组
iscell 检验数组是否为细胞型  ---------------------iscelll(细胞数组名)

7.数学运算与函数

(1).基本运算符

+,-,*,\,/,^,

(2).矩阵的运算方法

加法:
c=a+b(表示a矩阵和b矩阵相加赋给1)

乘法:
一般乘法: a*b
点积: dot(a,b)
叉积: cross(a,b)
卷积: conv(a,b)   =======a,b必须都为矢量

除法:(一般在解线性方程组时会用到)
x=a\b       如果ax=b,则 x=a\b是矩阵方程的解。
x=b/a       如果xa=b,  则x=b/a是矩阵方程的解。

转置:
c=a' (右上角加转置符号)

求逆:(要求矩阵为方阵。这在矩阵运算中很常用)
x=inv(a)  

其余矩阵运算的相关方法:
求行列式(det),矩阵求逆(inv),求秩(rank),求迹(trace), 求模(norm)。
d=eig(A)求矩阵 A的特征值,[v,d]=eig(A)求矩阵 A的特征向量和特征值,这里v的列向量是对应的特征向量。

(3).数学函数

数学函数比较多,在实际的应用中,可以对需要的数学函数进行查询;例如,sqrtm(m)函数,用于计算m的平方根;

(4).多项式

A.多项式的表示方法

任意多项式都可以用一个行向量来表示,将多项式的各个项用向量的形式表示出来,然后构造出多项式。如:

p=[1 -2 1]
poly2sym(p)
ans=x^2 -2x +1 也可以利用root()函数来求多项式的根,如:

p=[1 -2 1]
roots(p)
ans=
	 1
	 1
B.ploy(A)函数

A是一个n×n的矩阵时,此函数返回矩阵A的特征多项式p,p是1+n维向量;A是向量时,此函数返回以向量中的元素为根的多项式。

C.多项式的数组运算

对于一个多项式P,要求在x处的多项式的值的时候,可以使用函数=polyval(P,X),即可求得对应出的值;如:

p=[1 -2 1]
polyval(p,6)
ans=25
D.数组在多项式中的计算

在多项式中进行矩阵运算时,可以使用volyvalm(p,x)函数进行运算,注意:p为对应的多项式向量,x必须为方阵,如:

p=[ 1 3 2]
a=[1,2;3,4]
volyvalm(p,a)
ans=[12,16;24,36]

8.绘图命令

(1).二维图形

A.基本的绘图指令

plot(x,y)函数:用于在二维界面上进行绘图的函数,图形的x和y刻度均为显性;其使用方法为,如下:

x=linspace(0,2*pi)  %首先先定义x的取值范围
y=sin(x)            %这一步定义x和y的关系
plot(x,y)           %最后用plot()函数绘制对应的图形(x和y均为线性) 可以在同一个平面内画出不同的曲线,方法如下:

x=linspace(0,2*pi)
plot(x,sin(x),x,sin(x)+1,x,sin(x)-1)
或者:
y1=sin(x)
y2=sin(x)+1
y3=sin(x)-1
plot(x,y1,x,y2,x,y3)
也可以用叠图的方式来实现:
plot(x,sin(x))
hold on
plot(x,sin(x)+1)
hold on
plot(x,sin(x)-1)

其他几个绘图的函数与plot()函数的使用方法相似,如:

plot 命令使用线性坐标空 间绘制图形;
loglog 命令在两个对数坐标空间中绘制图形;
semilogx(或 semilogy) 命令使用x轴(或y轴)为对数刻度,另外一个轴为线性刻度的坐标空间绘制图形;
polar 使用极坐标空间绘制图形。
B.图形绘制的信息控制

以plot()函数为例,plot()指令可以接受一系列的字符串的输入,用于控制曲线的格式、颜色、线标等;语法为:

plot(x,y,"CLM")

C:代表曲线的颜色,主要有:

b(蓝色) c(青蓝色)
g(绿色) k(黑色)
m(紫黑色) r(红色)
W(白色) y(黄色)

L:代表线条的格式,主要有:

-  (实现)
-- (虚线)
: (点线)
-. (点虚线) M:曲线所用的线标,主要有:

O 圆形
+ 加号
X 叉号
* 星号
^ 超上三角形
> 朝右三角形
< 朝左三角形
square 方形
diamond 菱形
pentagram 五角星形
hexagram 六角星形

关于绘图进一步的学习在百度文库有一个详细的教程,网址见http://wenku.baidu.com/link?url=5fqRZRAC6r_Q660-0W3jfh-fC7AR0oozBEdBqCparSOYp6uGCARH1Lla3nQp8s1EE5DHyHJIiVREOFRUEWBNtej4aozdladqAUVw5o5IAOW

(2).

(3).

9.

10.

未完待续》》》》》》》》》》》》》》》》》》》》》