MATLAB阵及矩阵操作
Numeric Array)和数运算(Array Operations)始MATLAB的核心内容。自MATLAB5.x版起,由于其面向的特征,这种(以下)成MATALB最重要的一内建数据型(Built-in Data Type),而数运算就是定这种数据构上的方法(Method)。
    本节系统阐述:一、二建、寻访;数运算和矩运算的区实现运算的基本函数;多式的表达、建和操作;常用准数生成函数和数构作技法;高建、寻访和操作;非数NaN概念和用;系和逻辑操作。
    便指出:(1)本章所涉内容和方法,不使用于数,而且也将部分地延伸使用于在其他数据构中。
一、 变量和数据
1 数据类型
MATLAB7.3定义了15种基本的数据类型
1.1 建立double类型数据例:(注:double为系统默认数据类型)
a=3.3 
a =
    3.3000
小结查看数据类型方法
方法一whos 要查看的变量名  注:查看多个变量时各变量之间用空格分开,不能用逗号分开
例:查看上面定义的变量a
whos a 
  Name      Size                    Bytes  Class
  a        1x1                        8  double array
Grand total is 1 element using 8 bytes
方法二:使用class函数,函数调用常用格式:  str = class(object) ——函数返回object的类型
例:class(a) 
ans =
double
方法三:使用isa函数,函数调用常用格式:  n = is(object,'类型')——函数返回值为1,说明object为第二个参数指定的类型,0表示不是。

例:isa(a,'double') 
ans =
    1
isa(a,'char')
ans =
    0

1.2建立其他数值类型数据的方法
使用singleint_uint_分别建立单精度、有符号整型、无符号整型的数据
例:
b=single(a)%建立精度b   
b =
    3.3000
whos a b %a b详细信息 
  Name      Size                    Bytes  Class
  a        1x1                        8  double array
  b        1x1                        4  single array
Grand total is 2 elements using 12 bytes

class(b) %量b的数据型 
ans =
single
isa(b,'single')
ans =
    1
c=int8(a) %尝试量a的3.8,看果有何化,得出什么结论
c =
    3

class(c)%c的数据型 
ans =
int8
isa(c,'int8')
ans =
    1

结论:a的值改为3.8后变量c的值变为4,说明在MATLAB中将一个浮点型数据转换为整型数据是遵循“四舍五入”的法则
2、数值
需了解MATLAB表达方式的组成、类型
了解数组(array)、矩阵(matrix)、向量(vector)、标量(数字)(scalar)的概念和它们之间的关系。
标量和向量是矩阵的特例,而矩阵是数组的特例。
复数(complex)和复数矩阵——实数矩阵是复数矩阵的特例,虚部为0
MATLAB把复数作为一个整体处理,虚数单位用自定义变量ij表示。               
1)复数标量

z=3.4+34i 
z =
  3.4000 +34.0000i
z=3.4+34j 
z =
  3.4000 +34.0000i


z=3.4+i34 
??? Undefined function or variable 'i34'.
z=3.4+j34
??? Undefined function or variable 'j34'.


z=3.4+i*34 
z =
  3.4000 +34.0000i
z=3.4+j*34 
z =
  3.4000 +34.0000i

结论:在创建复数(complex)和复数矩阵时,若虚部为常数,放在系统自定义变量ij之前可省略星号(*),但若放在其后则不能省略

a=3.4;b=9;
r=a+bi 
??? Undefined function or variable 'bi'. 
r=a+bj
Usage: M = bj(Data,Orders);
      M = bj(Data,Orders,Prop/Value pairs).
r =
    []
r=a+jb  
??? Undefined function or variable 'jb'.

r=a+i*b 
r =
  3.4000 + 9.0000i
r=complex(a,b) 
r =
  3.4000 + 9.0000i

结论:在创建复数(complex)和复数矩阵时,若虚部为变量,则与系统自定义变量ij之间必须加星号(*),无论其在前还是在后。另:complexa,b)可将实数矩阵a,b构成复数矩阵a+b*i.
2)复数矩阵——矩阵元素是复数
方法:
1)直接输入法
例:在MATLAB境下,用下面三条指令数矩C
a=2.7358; b=33/79;   
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]
C =
  1.0000            5.4716 + 0.4177i  0.6909         
  0.7071            4.8244            3.5000 + 1.0000i
whos C
  Name      Size                    Bytes  Class
  C        2x3                        96  double array (complex)
Grand total is 6 elements using 96 bytes
!!!注意:复数矩阵单个元素所占的字节数为16,而实数矩阵单个元素所占的字节数为8
2)由实部和虚部间接创建
例:数数的另一种输入方式。
M_r=[1,2,3;4,5,6]
M_r =
    1    2    3
    4    5    6
M_i=[11,12,13;14,15,16]
M_i =
    11    12    13
    14    15    16
则复数矩阵可由下面两种方式创建,必须保证上面两个矩阵大小是相同的
CN1=M_r+i*M_i     
CN1 =
  1.0000 +11.0000i  2.0000 +12.0000i  3.0000 +13.0000i
  4.0000 +14.0000i  5.0000 +15.0000i  6.0000 +16.0000i
CN2=complex(M_r,M_i)
CN2 =
  1.0000 +11.0000i  2.0000 +12.0000i  3.0000 +13.0000i
  4.0000 +14.0000i  5.0000 +15.0000i  6.0000 +16.0000i
3MATLAB提供的复数和复数矩阵操作函数
复数直角坐标表示和极坐标表示之间转换的MATLAB指令如下:
real(z)            z的实部a=rcosθ
imag(z)            z的虚部b=rsinθ
abs(z)              z的模r=(a2+b2)
angle(z)            z的相角θ=arctg(b/a)
求其共轭的函数为:
conj(z)            z的共轭a-bi
如果z是复数矩阵,则上述函数是对矩阵里的每个元素做同样的操作。
二、MATLAB矩阵(二维数组)的创建——6种方法
1、直接输入矩阵元素法
对于一般较小的简单的矩阵,用户可以从键盘上直接输入一系列的元素生成矩阵。
规则
矩阵元素必须用[    ]括住
矩阵元素必须用逗号或空格分隔           
[    ]内矩阵的行与行之间必须 linspace函数调用的格式为用分号(;)或Enter键分隔
例:在MATLAB中创建矩阵
矩阵元素可以是任何matlab表达式 ,可以是实数 ,也可以是复数
实现方法如下:
A=[1 2 3;4 5 6]
A=[1,2,3;4,5,6]
A=[1 2 3
4 5 6]
练习:MATLAB中创建矩阵
总结:如何获取一个已建立矩阵的信息?
调用MATLAB提供的函数——class(),size(),length(),ndims()

class(A)%型 
ans =
double
size(A)%大小 
ans =
    2    3
length(A)% 
ans =
    3
ndims(A)%
ans =
    2

2、利用冒号表达式建立一个向量
冒号表达式可以生一个行向量,一般格式是:
其中e1初始e2为步长缺省为1e3为终
注意:该方法产生的行向量的最后一个元素的值小于等于e3,并不一定是e3
例如1:6:5
ans =
    1
MATLAB中,还可以用linspace函数产生行向量。其调用格式为:linspace(a,b,n)
其中ab是生成向量的第一个和最后一个元素,n是元素总数。
显然,linspace(a,b,n)a:(b-a)/(n-1):b等价。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。