rank
矩阵的秩
说明
示例
矩阵的秩
确定矩阵是否满秩。
创建一个 3×3 矩阵。第三列中的值是第二列中的值的两倍。
A = [3 2 4; -1 1 2; 9 5 10]
A = 3×3
3 2 4
-1 1 2
9 5 10
计算矩阵的秩。如果矩阵满秩,则秩等于列数,size(A,2)
。
rank(A)
ans = 2
size(A,2)
ans = 3
由于列是线性相关的,因此该矩阵秩亏。
指定秩容差
使用容差计算矩阵的秩。
创建一个 4×4 对角矩阵。对角线上有一个等于 1e-15
的小值。
A = [10 0 0 0; 0 25 0 0; 0 0 34 0; 0 0 0 1e-15]
A = 4×4
10.0000 0 0 0
0 25.0000 0 0
0 0 34.0000 0
0 0 0 0.0000
计算矩阵的秩。
rank(A)
ans = 3
由于默认算法计算大于 max(size(A))*eps(norm(A))
的奇异值的个数,因此该矩阵不被视为满秩。对于此矩阵,对角线上的小值被排除,因为它小于容差。
再次计算矩阵的秩,但指定容差 1e-16
。
rank(A,1e-16)
ans = 4
输入参数
详细信息
秩
矩阵中线性无关列的个数是矩阵的秩。一个矩阵的行秩和列秩始终相等。
如果一个矩阵的秩是具有相同大小的矩阵能达到的最高秩,则该矩阵为满秩;如果矩阵不具有满秩,则该矩阵为秩亏。秩用于度量矩阵的范围或列空间的维度,它是所有列的线性组合的集合。
算法
rank
使用基于奇异值分解 (SVD) 的方法。SVD 算法相比其他一些方法耗时更多,但它也是最可靠的。
矩阵 A
的秩计算为大于容差的奇异值的个数。默认情况下,容差为 max(size(A))*eps(norm(A))
。但是,您可以使用命令 rank(A,tol)
指定另一个容差。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
代码生成不支持对此函数使用稀疏矩阵输入。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
代码生成不支持对此函数使用稀疏矩阵输入。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)