我有一個大單元格,每個元素都攜帶一個大矩陣(M)的索引集合。我有這些索引指定的M的元素的一些操作,例如尋找快速處理細胞矩陣的方法
N=1000;
P=100;
M=rand(N, N);
K=zeros(N, P);
for n=1:N
IND{n} = [randi(N, 1, randi(200))];
end
tic
for m=1:P
for n=1:N
K(n, m) = sum(sum(M(IND{n})));
end
end
toc
tic
for m=1:P
Z = cellfun(@(idx) sum(M(idx)), IND, 'UniformOutput', false);
K(:, m) = [Z{:}];
end
toc
最後一個循環,如果相當緩慢。有沒有辦法使用一個語句而不是循環來做同樣的事情?謝謝。
檢查[cellfun](http://goo.gl/0jj3z)。 – Marcin
謝謝。我遵循幫助,並得到以下代碼Z = cellfun(@(x)sum(sum(M(x))),IND,'UniformOutput',false); K = [Z {:}];但它比循環代碼更慢:( – user1285419
你的最小代碼不起作用......「函數'subsindex'沒有爲類'cell'的值定義。」你能告訴我們你真的做了什麼嗎? – bla