2013-06-04 2 views
1

В Matlab у меня есть целочисленный массив a = [1 2 3]. Мне нужно, чтобы преобразовать их в одну строку, разделенные»,„:Matlab: преобразовать массив int в массив строк?

c = '1,2,3' 

Если каким-то образом я могу иметь массив строк B = [“1' „2“„3“], то можно использовать

c = strjoin(b, ',') 

для достижения цели.

Итак, мой вопрос: как преобразовать целочисленный массив a = [1 2 3] в строковый массив b = ['1' '2' '3']?

Int2str() не работает. Он будет выдавать

'1 2 3' 

и это не «массив строк», поэтому strjoin не может применить к нему для достижения «1,2,3»

+0

Спасибо за 3 ответов, которые могут получить с = '1,2,3'. Но мой собственный ответ ниже - это тот, который на самом деле «конвертирует массив int в строковый массив» :) –

ответ

2

Вы можете просто использовать sprintf():

a = 1:3; 
c = sprintf('%d,',a); 
c = c(1:end-1); 
+0

+1 - Я не знал это! – n00dle

2

Там в function in the file exchange называется vec2str, что будет сделай это.

Чтобы удалить квадратные скобки, необходимо установить параметр encloseFlag в значение 0. Пример:

a = [1 2 3]; 
b = vec2str(a,[],[],0); 

Внутри b вы будете иметь:

b = 
    '1,2,3' 
+0

звучит неплохо, но не так просто, как решение Олега, особенно когда требуется загрузка файла :) –

2

Я нашел одно решение сам:

после получения строки (не массив), разделить его:

b = int2str(); %b='1 2 3' 
c = strsplit(b); %c='1' '2' '3' 

Тогда я могу получить результат c = strjoin (c, ','), как я и хотел.

2

Вы можете использовать:

c = regexprep(num2str(a), '\s*', ','); 
Смежные вопросы