2016-11-10 2 views
0

Мой вход N уникальные строки разной длины, сохраненной в структуре, такие какMatlab: Добавление уникальных строк в одну ячейку с запятой Разделения

A.data{1} = {'The cat has'} 
A.data{2} = {'green eyes'} 

таким образом, что это A.data Nx1.

Желаемый результат - это ячейка 1,1 со всеми уникальными строками, расположенными друг за другом и разделенные запятыми.

output = ['The cat has' ', ' 'green eyes'] 

который производит The cat has, green eyes это именно то, что я хочу для моих N строк.

Любые идеи?

Спасибо!

ответ

3

Использование strjoin:

A.data{1} = 'The cat has'; 
A.data{2} = 'green eyes'; 
result = strjoin(A.data, ', '); 

дает

result = 
The cat has, green eyes 

Если данные дополнительный уровень вложенности:

A.data{1} = {'The cat has'} 
A.data{2} = {'green eyes'}; 

вам нужно избавиться от него с

B = cellfun(@(x) x, A.data); 

перед вызовом strjoin:

result = strjoin(B, ', '); 
+0

Спасибо за ответ. Как ни странно, я получаю сообщение об ошибке на свои собственные данные: «Первый вход должен быть массивом ячеек массивов символов». Это несмотря на 'whos' возвращающую ячейку как тип. Мои конкретные данные выглядят так: '/dir/file1.extention,1", "/dir/file1.extention,2" ... "/dir/file1.extention,N." ' – TMorville

+0

Можете ли вы отредактировать вопрос с помощью переменная, которая воспроизводит проблему? –

+0

Привет Луис. Я отредактировал вопрос таким образом, чтобы он воспроизводил ошибку. Я заметил, что мои данные скорее «Кошка имеет», а не «Кошка». Таким образом, данные записываются в фигурные скобки '{} '. – TMorville