Как я могу конкатенировать строки в массиве ячеек с пробелами между ними в MATLAB?

Я хочу объединить (заполнение пробелами) строки в массиве ячеек {'a', 'b'}, чтобы дать одну строку 'a b'. Как это сделать в MATLAB?

Ответы

Ответ 1

Вы можете обмануть бит, используя массив ячеек как набор аргументов функции sprintf, а затем очистите лишние пробелы с помощью strtrim:

 strs = {'a', 'b', 'c'};
 strs_spaces = sprintf('%s ' ,strs{:});
 trimmed = strtrim(strs_spaces);

Грязный, но мне он нравится...

Ответ 2

matlab имеет функцию для этого,

ссылка

strjoin

http://www.mathworks.com/help/matlab/ref/strjoin.html

strjoin

Присоединить строки в массиве ячеек в одну строку

Синтаксис

str = strjoin(C) example

str = strjoin(C,delimiter)

Пример:

Присоединиться к списку слов с пробелами

Присоединяйте отдельные строки в массиве ячеек строк C с одним пробелом.

C = {'one','two','three'};

str = strjoin(C)

str =

one two three

Ответ 3

Небольшое улучшение (?) по ответу Alex

strs = {'a','b','c'};  
strs_spaces = [strs{1} sprintf(' %s', strs{2:end})];

Ответ 4

Вы можете выполнить это, используя функцию STRCAT, чтобы добавить пробелы ко всем, кроме последней ячейки вашего массива ячеек, а затем объединить все строки вместе:

>> strCell = {'a' 'b' 'c' 'd' 'e'};
>> nCells = numel(strCell);
>> strCell(1:nCells-1) = strcat(strCell(1:nCells-1),{' '});
>> fullString = [strCell{:}]

fullString =

a b c d e

Ответ 5

Оба join и strjoin введены в R2013a. Однако сайт mathworks о strjoin читает:

Начиная с R2016b, функция join рекомендуется объединять элементы массива строк.

>> C = {'one','two','three'};
>> join(C) %same result as: >> join(C, ' ')

ans = 

  string

    "one two three"

>> join(C, ', and-ah ')

ans = 

  string

    "one, and-ah two, and-ah three"

Лично мне нравится решение Alex'а, так как более старые версии Matlab многочисленны в исследовательских группах по всему миру.