matlab矩阵

layout: post
title: "matlab矩阵"
date: 2020-4-10 9:00:00
categories: [MatLab]
excerpt: "matlab矩阵运算,来自MathWork帮助中心-仅作个人查询参考"

MatLab矩阵

创建矩阵

对称矩阵

1.pascal矩阵,杨辉三角矩阵

A=pascal(n)

2.创建一个非对称幻方矩阵,它的行总和与列总和相等

B = magic(3)
B =
      8     1     6
      3     5     7
      4     9     2

随机矩阵

由随机整数构成的 3×2 矩形矩阵:在这种情况下,randi 的第一个输入描述整数可能值的范围,后面两个输入描述行和列的数量。

C = randi(10,3,2)
C =

    9   10
  10     7
    2     1

自定义矩阵

u = [3; 1; 4]%行之间用分号

v = [2 0 -1]

s = 7
u =
      3
      1
      4

v =
      2     0    -1

s =
      7

矩阵的加减法

加法和减法要求两个矩阵具有兼容的维度。如果维度不兼容,将会导致错误

转置

'复共轭转置

.'非复共轭转置

矩阵乘法

前行后列

单位矩阵

eye(m,n)%表示mxn的单位矩阵

求逆矩阵

可逆矩阵

方程和具有相同的解
X = inv(A)

判断可逆

通过 det 计算的行列式表示由矩阵描述的线性变换的缩放因子。当行列式正好为零时,矩阵为奇异矩阵,因此不存在逆矩阵。

d = det(A)
d =

    1

有些矩阵接近奇异矩阵,虽然存在逆矩阵,但计算容易出现数值误差。cond 函数计算逆运算的条件数,它指示矩阵求逆结果的精度。条件数的范围是从 1(数值稳定的矩阵)到 Inf(奇异矩阵)。

c = cond(A)
c =

  61.9839

很少需要为某个矩阵构造显式逆矩阵。求解线性方程组 Ax = b 时,常常会误用 inv。从执行时间和数值精度方面而言,求解此方程的最佳方法是使用矩阵反斜杠运算符,即 x = A。有关详细信息,请参阅 mldivide

Kronecker 张量积

 

两个矩阵的 Kronecker 乘积 kron(X,Y)X 的元素与 Y 的元素的所有可能乘积构成的较大矩阵。如果 X 为 m×n 且 Y 为 p×q,则 kron(X,Y) 为 mp×nq。元素以特定方式排列,呈现 X 的每个元素分别与整个矩阵 Y 相乘的结果。

[X(1,1)*Y  X(1,2)*Y  . . .  X(1,n)*Y
                     . . .
 X(m,1)*Y  X(m,2)*Y  . . .  X(m,n)*Y]

Kronecker 乘积通常与元素为 0 和 1 的矩阵配合使用,以构建小型矩阵的重复副本。例如,如果 X 为 2×2 矩阵

X = [1   2
     3   4]

I = eye(2,2) 为 2×2 单位矩阵,则:

kron(X,I)
ans =

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

并且

kron(I,X)
ans =

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

除了 kron 之外,对复制数组有用的其他函数还有 repmatrepelemblkdiag

向量范数和矩阵范数

 

向量 x 的 p-范数,

 

使用 norm(x,p) 进行计算。此运算是为 p > 1 的任意值定义的,但最常见的 p 值为 1、2 和 ∞。默认值为 p = 2,这与欧几里德长度向量幅值对应:

v = [2 0 -1];
[norm(v,1) norm(v) norm(v,inf)]
ans =

    3.0000    2.2361    2.0000

矩阵 A 的 p-范数,

 

可以针对 p = 1、2 和 ∞ 通过 norm(A,p) 进行计算。同样,默认值也为 p = 2:

A = pascal(3);
[norm(A,1) norm(A) norm(A,inf)]
ans =

   10.0000    7.8730   10.0000

如果要计算矩阵的每行或每列的范数,可以使用 vecnorm

vecnorm(A)
ans =

    1.7321    3.7417    6.7823

使用线性代数方程函数的多线程计算

对于许多线性代数函数和按元素的数值函数,MATLAB 软件支持多线程计算。这些函数将自动在多个线程上执行。要使函数或表达式在多个 CPU 上更快地执行,必须满足许多条件:

  1. 函数执行的运算可轻松划分为并发执行的多个部分。这些部分必须能够在进程之间几乎不通信的情况下执行。它们应需要很少的序列运算。

  2. 数据大小足以使并发执行的任何优势在重要性方面超过对数据分区和管理各个执行线程所需的时间。例如,仅当数组包含数千个或以上的元素时,大多数函数才会加速。

  3. 运算未与内存绑定;处理时间不受内存访问时间控制。一般而言,复杂函数比简单函数速度更快。

对于大型双精度数组(约 10,000 个元素),矩阵乘法 (X*Y) 和矩阵乘幂 (X^p) 运算符会大幅增加速度。矩阵分析函数 detrcondhessexpm 也会对大型双精度数组大幅增加速度。

 
原文地址:https://www.cnblogs.com/1605-3QYL/p/12689293.html