|Returns a sparse orthonormal basis for the range|
|Other toolboxes required||none|
|Function category||Helper functions|
|This is a helper function that only exists to aid other functions in QETLAB. If you are an end-user of QETLAB, you likely will never have a reason to use this function.|
sporth is a function that computes an orthonormal basis for the range of a full or sparse matrix. When the matrix is sparse, this computation is performed via the QR decomposition and is typically much faster than using orth(full(S)). This function is useful in particular for computing the rank of a sparse matrix without having to use the (slow) rank(full(S)) or the (often inaccurate) sprank(S).
- Q = sporth(S)
- Q = sporth(S,TOL)
- [Q,r] = sporth(S,TOL)
- S: The matrix to have its range computed.
- TOL (optional, default norm(S,'fro') * eps(class(S))): The numerical tolerance used.
- Q: A matrix whose columns form an orthonormal basis for the range of S.
- r (optional): The rank of S.
The following example gives a 4-by-4 matrix whose range is spanned by the two vectors $[1,0,0,0]^T$ and $[0,0,1,0]^T$:
>> S = sparse(4,4); >> S(1,1) = 1; S(3,2) = 1; >> sporth(S) ans = (1,1) 1 (3,2) 1
Note that the output is sparse because S is sparse. If the input is full then the output will be full as well:
>> sporth(full(S)) ans = 1 0 0 0 0 -1 0 0
If we just want to compute the rank of S, we can do the following:
>> [~,r] = sporth(S) r = 2
Click on "expand" to the right to view the MATLAB source code for this function.
- Sparse null space and orthogonal: The source of this file on MATLAB File Exchange