Multiply cell doubles with a matrix

I have a cell array A which has 1*5 cell, each cell has 12*1 doubles.
How multiply those 12*1 doubles with a MATRIX call B with 12*500 ?
Thank you

 採用された回答

Andrei Bobrov
Andrei Bobrov 2016 年 7 月 13 日
編集済み: Andrei Bobrov 2016 年 7 月 13 日

1 投票

out = bsxfun(@times,permute(cell2mat(A),[1,3,2]),B); % out - 3D double array
or
out = cellfun(@(x)bsxfun(@times,x,B),A,'un',0); % here out - cell array (1 x 5)

7 件のコメント

Mori
Mori 2016 年 7 月 13 日
Error using cell2mat (line 52) CELL2MAT does not support cell arrays containing cell arrays or objects.
or
Error using bsxfun Operands must be numeric arrays.
Error in @(x)bsxfun(@times,x,res2)
Andrei Bobrov
Andrei Bobrov 2016 年 7 月 13 日
編集済み: Andrei Bobrov 2016 年 7 月 13 日
Attach your cell array A.
You wrote: "I have a cell array A which has 1*5 cell, each cell has 12*1 doubles"
Small model of your "A" (let A -- cell array [1x3] each cell double [4x1]):
A = {(1:4)', (5:8)', (10:13)'};
Let B - double array [4x7]:
B = reshape(1:28,4,[]);
Then we have:
>> A = {(1:4)', (5:8)', (10:13)'};
>> B = reshape(1:28,4,[]);
>> out = bsxfun(@times,permute(cell2mat(A),[1,3,2]),B)
out =
ans(:,:,1) =
1 5 9 13 17 21 25
4 12 20 28 36 44 52
9 21 33 45 57 69 81
16 32 48 64 80 96 112
ans(:,:,2) =
5 25 45 65 85 105 125
12 36 60 84 108 132 156
21 49 77 105 133 161 189
32 64 96 128 160 192 224
ans(:,:,3) =
10 50 90 130 170 210 250
22 66 110 154 198 242 286
36 84 132 180 228 276 324
52 104 156 208 260 312 364
>>
Mori
Mori 2016 年 7 月 13 日
Here they are
Mori
Mori 2016 年 7 月 13 日
or both here
Mori
Mori 2016 年 7 月 13 日
Oh I see my bad, It has actually 1*5 cell and each cell 1*12 cell and each cell has 1 double. Thanks for the example, I see where it was my mistake.
Andrei Bobrov
Andrei Bobrov 2016 年 7 月 13 日
for your data (MatFiles.mat):
A1 = cellfun(@(x)[x{:}]',A,'un',0);
out = bsxfun(@times,permute(cell2mat(A1),[1,3,2]),B); % out - 3D double array
or
out = cellfun(@(x)bsxfun(@times,x,B),A1,'un',0); % here out - cell array (1 x 5)
Mori
Mori 2016 年 7 月 13 日
ok great, it works. I relay appreciate.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCell Arrays についてさらに検索

質問済み:

2016 年 7 月 13 日

コメント済み:

2016 年 7 月 13 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by