2014-10-27 227 views
0

我有一個很長的代碼,這是充滿了下面的「if」和MATLAB的編輯給我的建議如下:稀疏索引在MATLAB

這個稀疏索引表達式很可能是緩慢的

mt = rand(200,200); 
[c r] = size(mt); 
T = sparse(r*c,2); 

for i = 1:c 
    for j = 1:r 
     if(ind(j,i)==1) 
      templat = template + 1; 
      T((i-1)*r+j,2)=100000; 
     end 
    end; 
end; 

有沒有什麼方法可以讓代碼更快,並做matlab的建議? (該代碼可能無法運行,因爲我只是挑了幾行字,並試圖顯示這個問題)

回答

2

嵌套for的和if等同於以下量化代碼:

[jj, ii] = find(ind==1); %// jj is rows, ii is columns 
templat = template + numel(ii); 
T((ii-1)*r+jj,2) = 10000; 
+0

其實我有使用嵌套的for-loops。你可以在這裏看到代碼並糾正你的答案:https://dl.dropboxusercontent.com/u/94718193/code_sparse.m – Sam 2014-10-27 21:56:05

+1

@Sam這是一個巨大的代碼!你期望我們看看整個代碼嗎? – Divakar 2014-10-27 22:16:32

+0

不,我的意思是,代碼不僅僅是上面顯示的簡單代碼。我需要使用嵌套的循環代碼,因爲我需要索引 – Sam 2014-10-27 22:18:18