【发布时间】:2016-09-06 13:47:02
【问题描述】:
我有这段代码可以输出我需要的所有值,包括condA 和CGSorth 的每个值。但我希望将它们放置在一个漂亮的表中,其中 condA 和 CGSorth 作为列名,并且从 for 循环输出的每个值都放置在表的每一行中。这在 MATLAB 中可行吗?
nr=50; %Number of rows
nc=10; %Number of columns
for j = 1:10,
CondNumb=10^j-1;
A=randn(nr,nc);
[U,S,V]=svd(A);
S(S~=0)=linspace(CondNumb,1,min(nr,nc));
A=U*S*V';
condA = cond(A)
[Q1,R1] = cgs(A);
% Test orthgonality of Q
I = eye(10);
CGSorth = norm(Q1'*Q1 - I)
end
根据要求,我使用自己的 cgs() 函数,定义如下,
function [Q,R] = cgs(A)
% CGS computes the thin QR factorization
% of A using the CGS algorithm
% --------------------------------------
[m,n] = size(A);
Q = A; R = zeros(n);
for k = 1:n
R(1:k-1,k) = Q(:,1:k-1)'*A(:,k);
Q(:,k) = A(:,k)- Q(:,1:k-1)*R(1:k-1,k);
R(k,k) = norm(Q(:,k));
Q(:,k) = Q(:,k)/R(k,k);
end
end
【问题讨论】:
-
您在使用 MATLAB 中的
cgs吗?如果是,cgs语句不完整。当您尝试使用共轭梯度法求解线性方程组时,它需要右侧向量b。请编辑您的代码以使其可运行。 -
@rayryeng no cgs 是我自己的功能。我现在将其更改为仅说 qr()。代码应该运行但不会给出适当的值。谢谢。
-
没问题。您可以将其改回,因为我不知道您使用的是自己的
cgs函数。您可能想在帖子中说明这一点。
标签: matlab