2013-02-28 3 views
4

Я хочу объединить два массива ячеек вместе. У меня две матрицы разных размеров, и из того, что я понимаю, единственный возможный способ объединить их вместе - это использовать массивы ячеек. Вот мой кодКонкатенатные ячейки массивов

M = magic(3); 
B = {magic(3) 'sip' magic(4) magic(3) } 

C = {B; ... 
     B; ... 
     B; ... 
     B} 


c1 = C{1}{1,1}; 
c2 = C{1}{1,3}; 
c{1} = c1; % after extracting matrix from cell array put it it 
c{2} = c2; % into another cell array to attempt to concatenate 
conca = [c{1};c{2}]; %returns error. 

Я получаю следующее сообщение об ошибке:

??? Error using ==> vertcat 
CAT arguments dimensions are not 
consistent. 

Error in ==> importdata at 26 
conca = [c{1};c{2}]; %returns error. 

ответ

5

Я полагаю, что это ваш желаемый результат:

conca = 

    [3x3 double] 
    [4x4 double] 

Где conca{1} является:

8  1  6 
3  5  7 
4  9  2 

и conca{2} is:

16  2  3 13 
5 11 10  8 
9  7  6 12 
4 14 15  1 

Вы были на самом деле очень близки. Все, что вам нужно, это изменить квадратные фигурные скобки на фигурные скобки. Как это:

conca = {c{1};c{2}}; 

Я на самом деле не понимаю, почему вы использовали C и не только сделал

conca = {B{1};B{3}} 

Это даст вам тот же массив ячеек.

+0

Спасибо! Я пытаюсь сделать что-то подобное на другом наборе данных. Просто сделал небольшой пример, который был похож на работу. –

4

c{1} относится к содержимому ячейки, то есть к матрице в вашем случае. объединяет прилагаемый контент, т. Е. Две матрицы (если одного и того же числа строк).

Чтобы объединить два массива ячеек, обратитесь к ним как таковым. Чтобы ссылаться на отдельные ячейки массива ячеек, вы можете использовать (), например. c(1). Таким образом,

[c(1) c(2)] 

работы (или [с (1); с (2)]), но для этого примера,

c(1:2) 

является предпочтительным (или c(1:2)' для столбца вместо строки) ,

+0

Я не думаю, что это работает, поскольку массивы разных размеров? См. Ответ ХебелеХододо. – Floris

+0

@Floris Что не работает? Я не вижу намека на ответ ХебелеХододо, почему то, что пытался использовать ОП, или почему то, что я предлагаю, не должно работать. (btw: оба ответа были рассмотрены примерно в одно и то же время, поэтому я думаю, что OP пытался оба предложения и нашел их полезными.) –

+0

Когда два массива не имеют одинаковый размер, как в случае с OP, вы объединяете их с '{} 'вместо' [] '- вот где два ответа различаются, а ваши не будут работать. – Floris

Смежные вопросы