0

我应该使用 Matlab 实现 QR 分解,然后在矩阵 A = [1 2; 1 1; 2 3; 2 2]。这是我到目前为止尝试编写的代码。但是我遇到了一些错误,我不确定问题出在哪里。谁能发现它?

A = [1 2; 1 1; 2 3; 2 2];
m = 4
Q=A;
Q(:,1) = A(:,1)/norm(A(:,1));
K = eye(m);
for j=2:n 
Q(:,j) = ((K - Q(:,j-1)*Q(:,j-1)')*A(:,j))/norm((K - Q(:,j-1)*Q(:,j-1)')*A(:,j));
K = K - Q(:,j-1)*Q(:,j-1)';
end
R=Q'*A;
4

1 回答 1

0

您的 for 循环从 运行2:n,但您尚未定义 n。您只需要定义 n :

A = [1 2; 1 1; 2 3; 2 2];
[m,n] = size(A);

当我做这个添加时,我可以评估 Q*R 并得到

>> Q*R

ans =

    1.0000    2.0000
    1.0000    1.0000
    2.0000    3.0000
    2.0000    2.0000

请注意,定义m,n这种方式可以让您泛化以使用任何矩阵A(假设 m>=n)。

于 2015-11-30T20:35:30.763 回答