2016-11-15 104 views
0

我有AB裏面的矩陣單元陣列。我想獲得C矩陣乘法矢量化cellarray

A = 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 

B = 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 
    [18x18 double] 

K = magic(18); 

在for循環:

C = cell(8,1); 
for ii = 1:8 
    C{ii} = K*A{ii}'*B{ii}; 
end 

我怎樣才能在矢量形式(小區)這樣做呢?

+0

我沒有看到你如何矢量化沒有將單元格陣列轉換爲多維數組 –

+0

@Luis Mendo我的意思是我想在結果C的末尾轉換回單元格數組。在這個過程的中間,我可以使用多維度數組。但我仍然希望使用單元格來存儲所有矩陣。 – petersen

回答

0

雖然這是可能的,

K = repmat({K}, 8,1); 
C = spblkdiag(K{:}) * spblkdiag(A{:}).' * spblkdiag(B{:}); 
C = reshape(nonzeros(C), 18,[]); 
C = mat2cell(C, 18,18 * ones(8,1))'; 

我還是建議你使用一個循環。