2013-02-15 40 views
1

所以這裏的想法是讀取數據到一個矩陣,然後通過刪除多餘的列或行(s),但矢量化,而不使用任何完全循環而不使用if/else。這可能嗎?MATLAB如何矢量化這while while循環

這是我用它做循環的方式和的if/else

load file.dat 
r = num2str(size('file',1)) 
c = num2str(size('file',2)) 
while (r~=c) 
    if (r>c) 
     r-- 
    else (c>r) 
     c-- 
end 
res = file(1:r,1:c) 
save('squarefile.dat', 'res', '-ascii') 

謝謝

+3

對不起 - 但這必須是計算最小值的最低效算法之一。 – bdecaf 2013-02-15 07:58:33

+0

@bdecaf - 我正在研究用O(2^n)計算最小值的另一種算法;-) – Shai 2013-02-15 08:24:35

+2

這是無效的matlab語法。我想你的意思是'r = r-1'和'c = c-1'而不是'r - '和'c - ' – 2013-02-15 08:45:30

回答

4

給定矩陣A是n×m的大,我們將創建矩陣B這是一個正方形矩陣,通過去除多餘的列或行從A(取決於其尺寸較大):

B=A(1:min(size(A)),1:min(size(A))); 

的方式,這條線還可以是WRI如果想要覆蓋A並刪除多餘的信息,則需要A=A(1:min(size(A)),...) ...