Это должно быть очень просто. У меня есть массив ячеек с двумя столбцами. Один - это числа, а другой - цвета. Я хочу объединить эти два столбца в один столбец, разделенный символами подчеркивания. Например, у меня есть что-то вроде этого:конкатенирующие ячейки в матрице с разделителем
plant_tag = {3,'dark_blue';3,'dark_blue';3,'dark_blue'}
и я хочу что-то вроде этого:
desired = {'3_dark_blue'; '3_dark_blue'; '3_dark_blue'}
Я смотрел здесь и в других местах How can I concatenate strings in a cell array with spaces between them in MATLAB?
Вот что я пытался до сих пор
% Gives me errors
test2 = strjoin(plant_tag,'_');
test3 = strjoin(plant_tag(1,:),'_');
test4 = strjoin(cellstr(plant_tag(1,:)),'_');
test5 = strjoin(cellstr(plant_tag{1,:}),'_');
% No error, but misses number
test6 = [plant_tag{1,1} plant_tag{1,2}];
test7 = [plant_tag{1,:}];
Уверен, что у меня что-то отсутствует - Прошу прощения, если это что-то очевидно
хорошее использование 'cellfun'! +1 –
Хорошая идея! Отлично подходит для примера, но со всеми моими данными я получаю сообщение об ошибке: «Ошибка использования cellfun Нескаляр в Uniform output, по индексу 37, вывод 1. Установите« UniformOutput »в false. ' Поэтому я попытался: strcat (cellfun (@ (c) num2str (c), plant_tag (:, 1)), '_', plant_tag (:, 2), 'UniformOutput', false), но я все равно получаю ту же ошибку – user2860703
Эта ошибка возникнет, если элементы 'plant_tag (:, 1)' не все скалярны. Вы можете попытаться обойти проблему, переместив 'cellfun' на внешний вид:' cellfun (@ (c1, c2) strcat (num2str (c1), '_', c2), plant_tag (:, 1), plant_tag (: , 2), 'UniformOutput', ложь) ' – TroyHaskin