2016-11-05 64 views
0

我有一個nx3數組A。我想創建一個細胞B使得:以矢量化的方式將數組內容複製到單元格中MATLAB

for i=1:size(A,1) 
    B{i}=A(i,:); 
end 

我能做到這一點的向量化的方式,而不用於循環或在Matlab任何比這更快嗎?

編輯:

這個問題就產生了我,因爲我想呼籲的A每一行的功能。該函數僅輸出一個標量。所以一旦我已經形成B,我可以叫cellfun

C=cellfun(@func,B) 

我這樣做。 for循環似乎仍然更好。

b=rand(1000000,15); 
tic 
for i=1:size(b,1) 
    f{i}=b(i,:); 
end 
toc 

tic 
e=mat2cell(b, ones([1 size(b,1)]), [ size(b,2) ]); 
toc 

OUTPUT: 
Elapsed time is 1.386777 seconds. 
Elapsed time is 2.237526 seconds. 

回答

0

您可以使用mat2cell具有細胞基質B,那麼你可以調用B行分爲cellfun

0

嘗試的功能mat2cell

B=mat2cell(A, ones(1, size(A,1)), size(A,2)); 
+0

我做編輯。 'for'循環似乎仍然更好。 –

相關問題