如果我有一个矩形矩阵C
,带有线性独立行(参见在帖子底部的第一个观察中的预期数值的信息),其暗格是qxn
,使得q<=n
和我想制作几个正方形可逆矩阵T=[C;R]
。完成一个矩形矩阵,以便产生几个方形可逆的井状矩阵
这里重要的一点是矩阵T应该很好地适应条件(条件编号接近1)。
我写了一个非常inneficient的方式解决该问题的代码:
clear all
C=[1 0]; %example
tol=0.1;
n=size(C,2);
q=size(C,1);
singularity=1;
it=0;
while(singularity==1)
a=-5;
b=5;
R=a + (b - a) .* rand(n - q, n); %generates randomic R matrix with numerical values beetwen 'a' and 'b'
M=[C;R];
if(abs(cond(M)-1)<tol) %cond(M) computes the condition number of M
singularity=0;
end
it=it+1;
end
考虑C=[1 0]
算法的范围为700〜2K迭代(收敛然而,过程运行速度非常快,因为指令很简单。)
现在,考虑到C=[1 0 0]
我被迫中断处理,因为迭代超过2kkk。
观察:我的矩阵C
的值的数值usuaally将是小的正整数(从一到十),小racional编号从0至5和零。
重要:对于一个给定矩阵C
我做不只需要一个矩阵R
,这将使M
良好条件。在我的应用程序中,我将需要几个矩阵R
(尽可能多我想要)为一个给定的C
,所以这就是为什么我试图生成R
随机,但不幸的是在一个非常低效的方式。
备注:当然,我能找到一个R,M为好的条件,然后其他好条件矩阵可以是多以前的一个,但我想尝试其他方法。
代替嵌套的循环,你可以写'R = A +(B - A) * rand(n - q,n);'生成'R' – rahnema1
好吧,现在代码更简单 – gustavoreche
,效率更高! – rahnema1