2015-05-28 3 views
0

Как вставить элементы массива ячеек в другой массив ячеек без цикла for? Элементы ячейки A являются целыми числами.Вставка элементов массива ячеек в другой массив ячеек

Вход:

A = [1x2 double] [1x2 double]  
    [1x2 double] [1x2 double] 
    [1x2 double] [1x2 double]  
    [1x2 double] [1x2 double]  
    [1x2 double] [1x2 double]  
    [1x2 double] [1x2 double] 

A{1}=[2 5] 
A{2}=[6 8] 

B=[8] [7] 
    [7] [0]  
    [4] [3] 
    [7] [0]  
    [2] [1] 
    [1] [2] 

C=cell(6,2); 

Выход:

C{1}=[A{1} B{1}]; 
C{2}=[A{2} B{2}]; 
+0

Что случилось с петлей? Кроме того, все ваши элементы всегда одинакового размера? Возможно, вы можете использовать обычный массив ... – Dan

ответ

1

Некоторые классические использование cellfun возможно

C=cellfun(@horzcat, A, B, 'uni', 0) 
+0

Обратите внимание, что 'cellfun' - это всего лишь петля под капотом и почти наверняка не поймет каких-либо выигрышей в производительности ... – Dan

+0

@Dan, пожалуйста, указывайте на любые претензии относительно производительности в мой ответ или просьбы относительно эффективности в вопросе. –

+0

http://stackoverflow.com/questions/18284027/cellfun-versus-simple-matlab-loop-performance. В конце концов, это в основном цикл for с дополнительными накладными расходами. – Dan

0

Это возможно:

B = reshape(B, [], 1); 
C = [A(:) B(1:length(A))]; 
Смежные вопросы