matlab矩阵运算

使用入门

注意

最好建立自己的子目录 
M文件分为命令文件(script file)和函数文件(function file) 
输入edit (文件名) 
nargin与nargout,记录输入实参与输出实参

常用函数

abs()
acos()
acosh()
angle()
asin()
asinh()
atan()
atan2()
atanh()
ceil()
gcd()(最大公约数)
imag()
lcm(最小公倍数)
log()
log(10)
max()
min()
real()
rem()
sec()
floor()
fix()
round()(四舍五入)
sign()
sum()
help elfun

数据格式命令

format  long                      %16位
format  short  e                 %5位加指数
format  long e                   %16位加指数
format  hex                        %十六进制
format  bank                      %两个十进制位
format  +                            %正负或0
format  rat                          %有理数近似
format  short                      %缺省显示

建立矩阵

A = [1, 2, 3; 4, 5, 6; 7, 8, 9]
e1: e2: e3                        %e1初始值,e2步长, e3终止值
linspace(a,b,n)               %a第一个元素,b最后一个元素,n元素总数

拆分矩阵

A(1, 2) == A(3)                   %index与subscript对应——sub2ind与ind2sub
A(:, j)
A(:, k, k+m)_end
clear X              %将X从工作空间删除
X = []               %空矩阵,维数为0

特殊矩阵

zeros:                                       %全0矩阵
zeros(3),zero(2,3)
ones                                        %全一矩阵
eye                                         %产生单位矩阵
rand                            %用法matlab的rand函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数.matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都是相同的.
{
rand(m, n)
rand(m, n, 'single')
rand(m, n, 'double')
rand(2, 4, 2)              %三维

ans(:,:,1) =

    0.2769    0.0971    0.6948    0.9502
    0.0462    0.8235    0.3171    0.0344


ans(:,:,2) =

    0.4387    0.7655    0.1869    0.4456
    0.3816    0.7952    0.4898    0.6463

rand(size(A))
1+fix(365*rand(1, 60))
rand(1,100) * 2 - 1
rand(1,100) * 2 - 1
randn                %生成标准正态分布的伪随机数(均值为0,方差为1)
randi(i)                 %在开区间(0,i)生成均匀分布的伪随机整数 
randi(i,m,n)              %在闭区间[1,i]生成m*n型随机矩阵 
r = randi([i,j],m,n)        %在闭区间[i,j]生成m*n型随机矩阵
randi([2,4],4,5)

ans =

     4     3     3     2     2
     3     4     3     4     4
     2     3     2     3     2
     2     4     4     3     2


randi([2,4],[4,5])

ans =

     2     4     3     2     4
     2     4     3     4     3
     2     2     2     3     3
     2     3     4     2     4
}
reshape(A, m, n)

举例

在区间[20,50]内均匀分布的5阶随机矩阵 
X = 20 + (50 - 20) * rand(5)

均值为0.6,方差为0.1的5阶正态分布随机矩阵 
Y = 0.6 + sqrt(0.1) * randn(5)

超特殊矩阵

magic(n)            %每行每列及两条对角线元素和相等,由1,2,......,n^2,组成

vander([1; 2; 3; 4])

ans =

     1     1     1     1
     8     4     2     1
    27     9     3     1
    64    16     4     1

%vandermonde

toeplitz(x,y)
toeplitz(x)

toeplitz(1:2,3:5)
%警告: 输入列的第一个元素与输入行的第一个元素不匹配。
         在对角线冲突中,列具有更高优先级。 
> In toeplitz (line 31) 

ans =

     1     4     5
     2     1     4


pascal(5)

ans =

     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70

matlab运算

关系运算

比较量带矩阵时,结果为一个维数与原矩阵相同的矩阵

例子

(1)生成5阶随机方阵A

A = fix((80-20+1)*rand(5)+20)

A =

    69    25    29    28    60
    75    36    79    45    22
    27    53    78    75    71
    75    78    49    68    76
    58    78    68    78    61

 A = ceil((80 - 20) * rand(5) + 20)

A =

    66    63    70    47    50
    65    22    62    43    47
    44    37    40    66    59
    60    23    78    68    63
    31    26    23    32    66

(2)判断A的元素能否被3整除

P = rem(A, 3)==0

P =

     1     1     0     0     0
     0     0     0     0     0
     0     0     0     1     0
     1     0     1     0     1

%算数,关系与逻辑运算中,算数运算优先级最高,逻辑运算优先级最低

find(A>65)

ans =

     1
    11
    14
    18
    19
    25

A(find(A>65))

ans =

    66
    70
    78
    66
    68
    66

对角阵

diag(A)

ans =

    66
    22
    40
    68
    66

>> diag(A,2)

ans =

    70
    43
    59
   %提取第n条对角阵
V = ones(1,5)

V =

     1     1     1     1     1

>> diag(V)

ans =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

>> diag(V,3)

ans =

     0     0     0     1     0     0     0     0
     0     0     0     0     1     0     0     0
     0     0     0     0     0     1     0     0
     0     0     0     0     0     0     1     0
     0     0     0     0     0     0     0     1
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0

%第k条对角线的元素为向量V的元素

 D = diag(1: 5)

D =

     1     0     0     0     0
     0     2     0     0     0
     0     0     3     0     0
     0     0     0     4     0
     0     0     0     0     5

>> D*A

ans =

    66    63    70    47    50
   130    44   124    86    94
   132   111   120   198   177
   240    92   312   272   252
   155   130   115   160   330
  •  

三角阵

triu_____tril
triu(A)

ans =

    66    63    70    47    50
     0    22    62    43    47
     0     0    40    66    59
     0     0     0    68    63
     0     0     0     0    66

triu(A,2)

ans =

     0     0    70    47    50
     0     0     0    43    47
     0     0     0     0    59
     0     0     0     0     0
     0     0     0     0     0

矩阵操作

矩阵旋转

%函数rot90(A,k)将矩阵A旋转90度的k倍,

A = pascal(5)

A =

     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70

>> rot90(A,1)

ans =

     1     5    15    35    70
     1     4    10    20    35
     1     3     6    10    15
     1     2     3     4     5
     1     1     1     1     1

%对矩阵实施上下翻转——flipud(A)
flipud(A)

ans =

     1     5    15    35    70
     1     4    10    20    35
     1     3     6    10    15
     1     2     3     4     5
     1     1     1     1     1


%对矩阵实施左右翻转——fliplr(A)
fliplr(A)

ans =

     1     1     1     1     1
     5     4     3     2     1
    15    10     6     3     1
    35    20    10     4     1
    70    35    15     5     1

矩阵的伪逆

%当A不是一个方阵,或A是一个非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A(T)同型的矩阵B,使 
A * B * A = A 
B * A * B = B 
则B为A的伪逆,也称为广义逆矩阵,

pinv(A)

ans =

    5.0000  -10.0000   10.0000   -5.0000    1.0000
  -10.0000   30.0000  -35.0000   19.0000   -4.0000
   10.0000  -35.0000   46.0000  -27.0000    6.0000
   -5.0000   19.0000  -27.0000   17.0000   -4.0000
    1.0000   -4.0000    6.0000   -4.0000    1.0000

范数与条件数

矩阵或向量的范数用来度量矩阵向量在某种意义下的长度,范数有多种方法定义,对应不同的范数值

(1)
%计算向量V的2-范数
norm(V)
norm(V, 2)
%条件数
cond(V)
cond(V, 2)
(2)
%计算向量V的1-范数
norm(V, 1)
%条件数
cond(V, 1)
(3)
%计算向量V的 ∞-范数
norm(V, inf)
%条件数
cond(V, inf)

猜你喜欢

转载自blog.csdn.net/lcl497049972/article/details/81382820