Linear combination of cell arrays

1 回表示 (過去 30 日間)
Dan Ryan
Dan Ryan 2013 年 1 月 25 日
Is there a compact way (without loops) to take linear combinations of cell arrays that contain the same type of data (matrices of various sizes) in each index of the cell array?
For example:
A = {rand(2, 2), ones(1, 2)}
B = {rand(2, 2), [3, 4]}
and I want a cell array, C, such that
C = 3*A + 4*B
I want to be able to handle a cell array of arbitrary length. I can do this with a for loop, but I was thinking that there must be a better way.

採用された回答

Peter Perkins
Peter Perkins 2013 年 1 月 25 日
Either of these will work:
>> A = {rand(2, 2), ones(1, 2)}
>> B = {rand(2, 2), [3, 4]}
>> cellfun(@(a,b) 3*a + 4*b, A, B, 'UniformOutput',false)
ans =
[2x2 double] [1x2 double]
>> arrayfun(@(a,b) {3*a{:} + 4*b{:}}, A, B)
ans =
[2x2 double] [1x2 double]
Whether or not this is faster or more readable than a loop is another question. Hope this helps.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by