Как вставить объект в ячейку?

Я гуглил, но ничего не нашел, хотя считаю это общей необходимостью.
Я использую эту функцию в Matlab, чтобы вставить объект в ячейку:

function ce = insertInCell(ce,toInsert,idexx)
    ce = [ce(1:idexx-1,1); cellToInsert; ce(idexx:end,1);];
end 

Я думаю, что эта функция работает следующим образом:
1-й: создает новую ячейку, копируя ce(1:idexx-1,1)
2-й: добавляет cellToInsert в эту новую ячейку
3nd: копирует и добавляет ce(idexx:end,1); в новую ячейку

и мне было интересно, есть ли более эффективный способ сделать это? Я имею в виду функцию, которая просто обновляет индексы элементов (Или я ошибаюсь, и эта функция эффективна?)

Спасибо.


person Ramin    schedule 22.12.2012    source источник
comment
Вы хотите вставить an object или только a new cell element в ячейку?   -  person memyself    schedule 22.12.2012
comment
@memyself Я хочу вставить иногда матрицу, а иногда ячейку.   -  person Ramin    schedule 22.12.2012


Ответы (1)


MATLAB не предоставляет указатели, поэтому вы не можете просто обновить индексы (указатели), если только вы не напишете файл MEX для этой цели.

В вашем коде есть ошибка: в коде вы ссылаетесь на переменную cellToInsert, а в определении функции у вас есть только toInsert.

Ваш код работает только для вертикальных массивов ячеек. Он не работает для горизонтальных массивов ячеек или n-мерных массивов ячеек. Для вертикальных массивов ячеек это работает с исправлением toInsert -> cellToInsert.

Исправленная версия:

function ce = insertInCell(ce,cellToInsert,idexx)
    ce = [ce(1:idexx-1); cellToInsert; ce(idexx:end) ];
end
person nrz    schedule 22.12.2012