getLinearIndependent(A,ignore_constant_shift)
[Abasis, Abasisi, Asub]= getLinearIndependent(A,ignore_constant_shift)
Purpose: Takes in a matrix of column vectors and identifies
the subset of columns that forms a linear independent basis (Abasis).
It also clusters columns in the original matrix into groups of those that
share linear dependence (Asub). (e.g. If col2 = 2*col1, then col1 and
col2 would be grouped together).
Usage:
[Abasis, Abasisi, Asub]= getLinearIndependent(A)
[Abasis, Abasisi, Asub]= getLinearIndependent(A,ignore_constant_shift)
Inputs:
A: Input matrix of numerics
Inputs (Optional):
ignore_constant_shift: Flag (true/false [default]) for ignoring constant term
in determining independence (e.g. if col2 = 10-col1, col1 and col2 will
be grouped together if true; otherwise separately if false).
Outputs:
Abasis: The subset of linearly independent vectors in A that form a
basis of A.
Abasisi: Index locations of original basis vectors in A, such
that Abasis = A(:,Abasisi).
Asub: Cell array with one element for each basis vector in A. Each cell
in Asub identifies clusters of columns in the original matrix A that
share linear dependence.
Examples:
% -----------------------
% % % % Example 1: % % %
% -----------------------
A = [1, 9, 2, 3, 2; 2, 8, 2, 3, 4; 3, 7, 3, 4 6; 4, 6, 4, 5, 8 ; 5, 5, 5, 6, 10];
% A =
% 1 9 2 3 2
% 2 8 2 3 4
% 3 7 3 4 6
% 4 6 4 5 8
% 5 5 5 6 10
%
% Note that: col2 = 10 - col1
% col4 = col3 + 1
% col5 = col1*2
[Abasis, Abasisi, Asub]= getLinearIndependent(A, true)
% -----------------------
% % % % Result 1: % % %
% -----------------------
% Abasis = % Subset of basis vectors
% 1 2
% 2 2
% 3 3
% 4 4
% 5 5
% Abasisi = % Indices of basis vectors
% 1 3
% Asub =
% 1x2 cell array
% [1x3 double] [1x2 double]
% Asub{1} : [1, 2, 5] % Subset of columns described by 1st basis vector
% Asub{2} : [3, 4] % Subset of columns described by 2nd basis vector
%
% -----------------------
% % % % Example 2: % % %
% -----------------------
A2 = [ [2,2,2,2,2]', A]
% A2 =
% 2 1 9 2 3 2
% 2 2 8 2 3 4
% 2 3 7 3 4 6
% 2 4 6 4 5 8
% 2 5 5 5 6 10
%
[Abasis, Abasisi, Asub]= getLinearIndependent(A2, false)
% -----------------------
% % % % Result 2: % % %
% -----------------------
% Abasis =
% 1 2 2
% 2 2 2
% 3 3 2
% 4 4 2
% 5 5 2
% Abasisi =
% 1 2 4
% Asub =
% 1x3 cell array
% [1x3 double] [1x2 double] [4]
% Asub{1} : [1, 3, 5]
% Asub{2} : [2, 6]
% Asub{3} : [4]
Author: David Stanley, Boston University, 2017
See also: getLinearIndependentCell, rref
引用格式
Dave Stanley (2024). getLinearIndependent(A,ignore_constant_shift) (https://www.mathworks.com/matlabcentral/fileexchange/64221-getlinearindependent-a-ignore_constant_shift), MATLAB Central File Exchange. 检索时间: .
MATLAB 版本兼容性
平台兼容性
Windows macOS Linux类别
- MATLAB > Mathematics > Linear Algebra >
标签
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!