在MATLAB中,矩阵是其核心数据结构,用于表示数值计算和算法的实施。这篇文档主要介绍了MATLAB中对矩阵的一些基本操作,包括创建、显示、变换和计算。以下是这些操作的详细说明:
1. **创建矩阵**:
- `eye(n)`:生成一个`n x n`的单位矩阵,对角线元素为1,其余为0。
- `zeros(m, n)`:生成一个`m x n`的全零矩阵。
- `ones(m, n)`:生成一个`m x n`的全1矩阵。
- `rand(m, n)`:生成一个`m x n`的矩阵,其中每个元素都是[0, 1)区间内的均匀分布随机数。
- `genmarkov(n, p)`:生成一个随机的n阶Markov矩阵,即行和为1且所有元素非负的矩阵。
- `linspace(a, b, num)`:生成从`a`到`b`的线性等分向量,包含`num`个等分点。
- `logspace(a, b, num)`:生成从10^a到10^b的对数等分向量,包含`num`个等分点。
2. **矩阵运算**:
- `logm(A)`:计算矩阵`A`的对数。
- `cumprod(A)`:计算矩阵`A`的元素的累计乘积。
- `cumsum(A)`:计算矩阵`A`的元素的累计和。
- `toeplitz(c, r)`:生成Toeplitz矩阵,c是主对角线元素,r是副对角线元素。
- `disp(A)`:在命令窗口中显示矩阵`A`及其文字内容。
- `length(v)`:返回向量`v`的长度。
- `size(A)`:返回矩阵`A`的维度,包括行数和列数。
- `diag(A)`:创建一个对角矩阵,若输入是向量,则生成对角矩阵;若输入是矩阵,则提取对角元素构成的向量。
- `find(A)`:找出矩阵`A`中非零元素的下标。
- `matrix(A, dim)`:改变矩阵`A`的维度。
- `rot90(A, k)`:将矩阵`A`逆时针旋转90度,k决定旋转次数。
- `sub2ind(dimensions, subscripts)`:将子索引转换为单一索引。
- `tril(A)`:提取矩阵`A`的下三角部分。
- `triu(A)`:提取矩阵`A`的上三角部分。
- `conj(A)`:计算矩阵`A`的共轭矩阵。
- `companion(A)`:生成矩阵`A`的伴随矩阵。
- `det(A)`:计算矩阵`A`的行列式。
- `norm(A)`:计算矩阵`A`的范数(可以是1范数、2范数、无穷范数等)。
- `nnz(A)`:返回矩阵`A`中非零元素的数量。
- `null(A)`:生成清空矩阵`A`中特定列空间的向量。
- `orth(A)`:返回矩阵`A`的正交基。
- `rank(A)`:计算矩阵`A`的秩。
- `trace(A)`:计算矩阵`A`的迹(对角元素之和)。
- `cond(A)`:计算矩阵`A`的条件数。
- `inv(A)`:计算矩阵`A`的逆。
- `rcond(A)`:计算逆矩阵的条件数。
3. **分解与求解**:
- `lu(A)`:进行LU分解,返回L和U矩阵。
- `pinv(A)`:计算矩阵`A`的Moore-Penrose伪逆。
- `qr(A)`:进行QR分解,返回Q和R矩阵。
- `givens(A)`:使用Givens变换处理矩阵。
- `linsolve(A, B)`:求解线性方程组Ax = B。
- `lyap(A, C)`:求解Lyapunov方程AX + XA' = C。
- `hess(X)`:计算Hessenberg矩阵。
- `poly(A)`:计算矩阵`A`的特征多项式。
4. **特殊矩阵与特征值**:
- `spec(A)`:计算矩阵`A`的特征值。
- `gspec(A)`:计算矩阵束的特征值。
- `bdiag(A1, A2, ..., An)`:创建块对角矩阵。
- `eigenmarkov`:处理正则化Markov矩阵的特征向量。
- `pbig`:处理特征空间的投影。
- `svd(A)`:进行奇异值分解,返回U、S和V矩阵。
- `sva(A)`:计算奇异值分解的近似。
- `cumprod(A)` 和 `cumsum(A)`:分别计算矩阵`A`的元素的累计乘积和累计和。
- `hist(X, bins)`:生成统计频数直方图。
- `max(A)` 和 `min(A)`:分别返回矩阵`A`的最大值和最小值。
- `mean(A)`:计算矩阵`A`的平均值。
- `median(A)`:计算矩阵`A`的中值。
- `prod(A)`:计算矩阵`A`的元素的乘积。
- `sort(A, flag)`:根据`flag`标志对矩阵`A`进行升序或降序排序。
- `std(A)`:计算矩阵`A`的标准差。
- `sum(A)`:计算矩阵`A`的元素之和。
- `trapz(y, x)`:使用梯形法则进行数值积分。
- `corr(X, Y)`:计算X和Y之间的相关系数或方差。
5. **稀疏矩阵**:
- `sparse(m, n, I, J, V)`:创建稀疏矩阵,I、J和V分别是非零元素的行、列和值。
- `adj2sp`:将邻接矩阵转换为稀疏矩阵。
- `full(A)`:将稀疏矩阵`A`转换为全矩阵。
- `mtlb_sparse`:将Scilab稀疏矩阵转换为MATLAB格式。
- `sp2adj(A)`:将稀疏矩阵转换为邻接矩阵。
- `speye(n)`:生成n阶的稀疏单位矩阵。
- `sprand(m, n, density)`:生成m x n稀疏矩阵,密度是非零元素的概率。
- `spzeros(m, n)`:生成m x n的稀疏全零矩阵。
- `lufact(A)`:对稀疏矩阵A进行LU分解。
- `lusolve(L, U, b)`:用稀疏矩阵的LU分解解方程组Ax = b。
- `spchol(A)`:对稀疏矩阵A进行Cholesky分解。
6. **矩阵与标量运算**:
- 矩阵与矩阵的加减(`+`、`-`):要求两个矩阵的维度相同。
- 元素乘除(`.*`、`./`):对应元素乘除,同样要求维度相同。
- 矩阵乘法(`*`):遵循矩阵乘法规则,不是简单的对应元素相乘。
- 幂次运算(`^`):仅适用于方阵,计算其幂次。
7. **元素访问**:
- `A(m, n)`:获取矩阵`A`中第m行第n列的元素。
- `A(:, n)`:获取矩阵`A`中第n列的所有元素组成的向量。
- `A(m, :)`:获取矩阵`A`中第m行的所有元素组成的向量。
- `A(m1:m2, n1:n2)`:获取矩阵`A`中从m1行到m2行,n1列到n2列的子矩阵。
以上就是MATLAB中对矩阵的基本操作,它们涵盖了创建、操作、计算、分解、求解等多个方面,构成了MATLAB数值计算的基础。熟练掌握这些操作对于进行复杂的数学建模和算法实现至关重要。