如果我有一個矩形矩陣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