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

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

5 ответов


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

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

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


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

ref:

strjoin

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

strjoin

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

синтаксис

str = strjoin(C) example

str = strjoin(C,delimiter)

Ex:

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

объединение отдельных строк в массив ячеек строк, C, с a единое пространство.

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

str = strjoin(C)

str =

one two three

небольшое улучшение (?) на ответ Алекса

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

вы можете выполнить это с помощью функции функции 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

и 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"

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