2015-11-23 7 views
0

Мне нужно вставить столбец (вектор) с нечисловыми ячейками данных (одну или несколько строк) в ячейку нечисловые данные в произвольном месте и сохранить старые столбцы данных, сдвинув их вправо.Вставьте столбец нечисловых данных в столбец ячейки в произвольном месте и сдвиньте старые данные вправо

my_word =

's' 'i' 'p' 
's' 'i' 'p' 
's' 'i' 'p' 
's' 'i' 'p' 
's' 'i' 'p' 

my_column =

'a' 
'b' 
'c' 
'd' 
'e' 

result_cell_1 =

's' 'a' 'i' 'p' 
's' 'b' 'i' 'p' 
's' 'c' 'i' 'p' 
's' 'd' 'i' 'p' 
's' 'e' 'i' 'p' 

result_cell_2 =

's' 'i' 'a' 'p' 
's' 'i' 'b' 'p' 
's' 'i' 'c' 'p' 
's' 'i' 'd' 'p' 
's' 'i' 'e' 'p' 

Основная проблема заключается в том, что я хочу вставить столбец во второе и третье место. Кроме того, я не ограничиваюсь длиной в примере, поэтому решение должно позволить мне перебирать строку любой длины и вставлять столбцы в каждом местоположении поэтапно. Кроме того, у меня есть решение для замены каждого столбца, включая первый и последний, поэтому они не являются проблемой. Проблема находится в середине, где длина не всегда одинакова.

+0

Вы действительно хотите, чтобы результаты назывались 'result_cell_1'? Имена переменных, как это, обычно трудно работать. Ячейка ячейки, вероятно, будет лучше, 'result_cell {1} ​​= ...'. – David

+0

имя не важно – mike

+0

Кроме того, вам нужно будет объяснить это лучше «решение должно позволить мне перебирать строку любой длины и вставлять столбец в каждом месте поэтапно» и почему ваш существующий код (который также должен включать) не может этого сделать. – David

ответ

1

Манипулирование клеточных массивов очень похоже на нормальные матрицы. Если i были столбец для вставки,

result = [my_word(:,1:i-1) my_column my_word(:,i:end)] 

бы достичь своей цели. Он разбивает my_word на первую и вторую половину и объединяет их вместе с my_column посередине.

+0

@David, он хочет вставить столбец, поэтому разрезайте все строки '(:, cols)'. – kmac

+0

Работает! Спасибо @kmac! – mike