2016-11-15 16 views
0

AB行列のセル配列があります。私は、forループではC行列乗算ベクトル化のセル配列

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); 

を取得したい:

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

は、私はベクトル化された形式(セル)でこれをどのように行うことができますか?

+0

セル配列を多次元配列に変換せずにベクトル化する方法がわかりません –

+0

@Luis Mendo結果の最後にセル配列に変換したいということです。多次元アレイを使用する。しかし、私はまだ最後にすべての行列を格納するためにセルを使いたいと思っています。 – 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))'; 

は、私はまだあなたがループを使用することをお勧めしたいです。