线性代数 · 矩阵 · Matlab | 满秩分解代码实现

发布时间 2023-11-04 17:13:39作者: MoonOut

背景 - 矩阵的满秩分解:

  • 若 A 为 m×n 矩阵,rank(A) = r,则存在 F m×r、G r×n,使得 A = FG。
  • 其中,F 列满秩,G 行满秩。
  • 求满秩分解的方法:
    1. 得到 A 的行最简形式 B;
    2. 对于 B 里某列为 1 该列中其他元素为零的列,取 A 的对应列,组成 F;
    3. 取 B 的前 r 行组成 G。

function[F,G] = fullrank_decompose(A)
r = rank(A);
if r == 0;
    disp('无满秩分解,重新输入')
end
[m,n] = size(A);
B = rref(A);%行最简
F = [];
for i = 1:r
    for j = 1:n
        if B(i,j) == 1
            F = [F, A(:,j)];
            break
        end
    end
end

% F = A(:, 1:m);
G = B(1:r, :);
end