orth
适用于矩阵范围的标准正交基
说明
示例
适用于满秩矩阵的基向量
计算并验证适用于满秩矩阵范围的标准正交基向量。
定义一个矩阵并计算它的秩。
A = [1 0 1;-1 -2 0; 0 1 -1]; r = rank(A)
r = 3
由于 A
是一个满秩方阵,orth(A)
计算出的标准正交基与奇异值分解 [U,S] = svd(A,"econ")
中计算出的矩阵 U
一致。原因是 A
的奇异值均为非零值。
使用 orth
计算适用于 A
的范围的标准正交基。
Q = orth(A)
Q = 3×3
-0.1200 -0.8097 0.5744
0.9018 0.1531 0.4042
-0.4153 0.5665 0.7118
Q
中的列数等于 rank(A)
。由于 A
为满秩矩阵,Q
和 A
具有相同的大小。
在合理误差界限内验证基向量 Q
是正交、归一化向量。
E = norm(eye(r)-Q'*Q,"fro")
E = 9.2306e-16
误差与 eps
的量级相当。
秩亏矩阵的基向量
计算并验证适用于秩亏矩阵范围的标准正交基向量。
定义一个奇异矩阵并计算它的秩。
A = [1 0 1; 0 1 0; 1 0 1]; r = rank(A)
r = 2
由于 A
是一个秩亏矩阵,orth(A)
计算出的标准正交基仅与奇异值分解 [U,S] = svd(A,"econ")
中计算出的矩阵 U
的前 r = 2
列一致。原因是 A
的奇异值并不全是非零值。
使用 orth
计算适用于 A
的范围的标准正交基。
Q = orth(A)
Q = 3×2
-0.7071 -0.0000
0 1.0000
-0.7071 0.0000
由于 A
为秩亏矩阵,Q
包含的列比 A
少一个。
指定基向量的容差
当矩阵具有较小的奇异值时,通过指定容差可更改将哪些奇异值视为零。
创建一个 7×7 希尔伯特矩阵。此矩阵为满秩矩阵,但有一些小的奇异值。
H = hilb(7)
H = 7×7
1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429
0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250
0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111
0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000
0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909
0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833
0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 0.0769
计算适用于 H
的范围的一个标准正交基。由于 H
为满秩矩阵,Q
和 H
具有相同的大小。
Q = orth(H)
Q = 7×7
-0.7332 0.6232 0.2608 -0.0752 0.0160 -0.0025 0.0002
-0.4364 -0.1631 -0.6706 0.5268 -0.2279 0.0618 -0.0098
-0.3198 -0.3215 -0.2953 -0.4257 0.6288 -0.3487 0.0952
-0.2549 -0.3574 0.0230 -0.4617 -0.2004 0.6447 -0.3713
-0.2128 -0.3571 0.2337 -0.1712 -0.4970 -0.1744 0.6825
-0.1831 -0.3446 0.3679 0.1827 -0.1849 -0.5436 -0.5910
-0.1609 -0.3281 0.4523 0.5098 0.4808 0.3647 0.1944
现在,再次计算标准正交基向量,但指定容差为 1e-4
。此容差使 orth
将三个奇异值视为零,因此标准正交基只有四列。
Qtol = orth(H,1e-4)
Qtol = 7×4
-0.7332 0.6232 0.2608 -0.0752
-0.4364 -0.1631 -0.6706 0.5268
-0.3198 -0.3215 -0.2953 -0.4257
-0.2549 -0.3574 0.0230 -0.4617
-0.2128 -0.3571 0.2337 -0.1712
-0.1831 -0.3446 0.3679 0.1827
-0.1609 -0.3281 0.4523 0.5098
输入参数
A
— 输入矩阵
矩阵
输入矩阵。
数据类型: single
| double
复数支持: 是
tol
— 奇异值容差
标量
奇异值容差,指定为实数标量。小于容差的 A
的奇异值被视为零,这会影响 orth
返回的列空间向量的数目。默认容差是 max(size(A)) * eps(norm(A))
。
详细信息
范围
矩阵 A
的列空间,或范围,是 A
中各列的所有线性组合的集合。作为线性方程 A*x = b
的解,任何向量 b
均包含在 A
的范围内,因为您还可以将它写作 A
中各列的线性组合。
秩
矩阵的 rank
等于范围的维数,也等于非零奇异值的个数。
算法
根据奇异值分解 [U,S] = svd(A,"econ")
中的 U
获得 A
的范围的标准正交基。如果 r = rank(A,tol)
,则 U
的前 r
列构成一个适用于 A
的范围的标准正交基。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
生成的代码可能返回与 MATLAB® 不同的基值。
代码生成不支持对此函数使用稀疏矩阵输入。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出R2022a: 指定容差
使用 tol
参数指定用于构成 A
的范围的标准正交基的奇异值的容差阈值。小于容差的输入矩阵的奇异值被视为零。
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)