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

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

Ответы [ 5 ]

17 голосов
/ 14 марта 2011

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

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

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

10 голосов
/ 02 июля 2013

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

ref:

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
7 голосов
/ 14 марта 2011

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

strs = {'a','b','c'};  
strs_spaces = [strs{1} sprintf(' %s', strs{2:end})];
4 голосов
/ 14 марта 2011

Вы можете сделать это, используя функцию 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
0 голосов
/ 13 февраля 2017

Оба join и strjoin представлены в R2013a. Тем не менее, сайт математики о 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 широко распространены в исследовательских группах по всему миру.

...