一、两种特殊数据类型
1.元胞数组
元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。
创建方式:
1)直接赋值
>> a={'matlab',20;ones(2,3),1:10} a = 'matlab' [ ]
[2x3 double] [1x10 double]
2)通过cell函数创建
>> b = cell(,);
b{1,1} = 'matlab';
b{1,2} = ;
b{2,1} = ones(,);
b{2,2} = :;
>> b b = 'matlab' [ ]
[2x3 double] [1x10 double]
2.结构体
结构体是matlab中另一个能够存储不同类型数据的数据类型,它与元胞数组的区别在于结构体是以指针的方式来传递数据,而元胞数组是通过值传递。
创建方式:
1)直接赋值
>> A.b1 = ; >> A.b2 = ones(); >> A.b3 = 'Matlab 2013a'; >> A A = b1: b2: [3x3 double] b3: 'Matlab 2013a'
2)通过struct函数创建
结构体变量名 = struct(属性名1, 属性值1, 属性名2, 属性值2,…)
>> B = struct('b1',,'b2',ones(),'b3','hello'); >> B B = b1: b2: [3x3 double] b3: 'hello'
二、matlab常用运算
已知线性方程组 Ax = B
1.方程的解
(1) 求逆运算 x = inv(A) * B
(2) 左除运算 x = A\B
>> A = [,,;-,,;,-,-];
>> B = [;-;-];
>> x = inv(A)*B;
>> x
x = 1.0200 -14.0000 9.7200 >> y = A\B;
>> y
y = 1.0200 -14.0000 9.7200
2.矩阵的秩
R = rank(A)
>> r = rank(A);
>> r
r =
3.矩阵的特征值与特征向量
[v, lambda] = eig(A)
>> [v, lambda] = eig(A) v = 0.8013 -0.1094 -0.1606 0.3638 -0.6564 0.8669 0.4749 0.7464 -0.4719 lambda = 9.7326 -3.2928 1.5602
4.矩阵的乘幂与开方
>> A1 = A ^; %乘幂 >> A2 = sqrt(A); %开方 >> A1 A1 = >> A2 A2 = 2.4495 + .0000i 1.7321 + .0000i 2.0000 + .0000i 0.0000 + .4142i 2.2361 + .0000i 2.6458 + .0000i 2.8284 + .0000i 0.0000 + .0000i 0.0000 + .7321i
5.矩阵的指数与对数
>> y1 = exp(A); %指数 >> y2 = log(A); %对数 >> y1 y1 = 1.0e+03 * 0.4034 0.0201 0.0546 0.0001 0.1484 1.0966 2.9810 0.0004 0.0000 >> y2 y2 = 1.7918 + .0000i 1.0986 + .0000i 1.3863 + .0000i 0.6931 + .1416i 1.6094 + .0000i 1.9459 + .0000i 2.0794 + .0000i 0.0000 + .1416i 1.0986 + .1416i
6.矩阵的提取与翻转
提取:
上三角(右上):y1 = triu(A)
下三角(左下):y2 = tril(A)
对角线:y3 = diag(A)
翻转:
上下翻转:y4 = filpud(A)
左右翻转:y5 = filplr(A)
沿列翻转:y6 = flipdim(A,1)
沿行翻转:y7 = filpdim(A,2)
逆时针旋转翻转:y8 = rot90(A)
>> A_triu = triu(A) A_triu = - >> A_tril = tril(A) A_tril = - - - >> A_diag = diag(A) A_diag = - >> A_ud = flipud(A) A_ud = - - - >> A_lr = fliplr(A) A_lr = - - - >> A_l = flipdim(A,) A_l = - - - >> A_h = flipdim(A,) A_h = - - - >> A_r90 = rot90(A) A_r90 = - - -
7.“商”及“余”多项式
[q, r] = deconv(p1, p2),p1为输入分子多项式系数,p2为输入分母多项式系数,q为输出多项式的“商”,r为输出多项式的“余”。
求多项式的“商”和“余”。
>> p1 = conv([,,],conv([,],[,])) p1 = >> p2 = [,,] p2 = >> [q,r] = deconv(p1,p2) q = - r =
未完待续。。。