2016-12-12 4 views
0

У меня есть вектор с определенными номерами, как:Matlab - Соединить целочисленные значения с символами в векторе

A=[1 2 3]; 

И мне нужно, чтобы получить еще один вектор, как:

B=[G1 G2 G3]; 

Поскольку я не могу смешивать символы и двойники, я попытался преобразовать матрицу а в массив ячеек делает:

num2cell(num2str(A)) 

а потом сделать:

strcat(A, 'G') 

Для получения желаемого результата. Но делая num2cell, я получаю значения ячеек для ваших белых пространств (поэтому вместо того, чтобы обнулять массив ячеек 3x1, я получаю Nx1), а затем конкатенация буквой «G» становится неправильной.

+1

Ваш вопрос не имеет смысла. B, поскольку он представляет собой массив переменных. –

+0

, может быть, не ясно, но G - символ, а число - целое число. Это решается ниже. – Pep

ответ

2

Проблема заключается в том, что num2cell делает каждый отдельный символ отдельным элементом массива ячеек по умолчанию.

num2cell(num2str(A)) 
% '1' ' ' ' ' '2' ' ' ' ' '3' 

Чтобы просто сцепить G к каждому элементу, вы можете просто использовать numstr на вектор-столбец версии A который помещает каждый строковое представление каждого числа в A на новой линии. strcat затем добавит 'G' к каждой строке. Если вы хотите, чтобы это был массив ячеек, мы можем обернуть это в вызове cellstr, чтобы получить массив ячеек.

output = cellstr(strcat('G', num2str(A(:)))) 

В качестве альтернативы, вы можете просто использовать sprintf на каждом элементе в A

output = arrayfun(@(x)sprintf('G%d', x), A, 'UniformOutput', false) 
+0

Спасибо! Теперь он отлично работает. – Pep

0

Если вы хотите B быть одна строка со всеми этими значениями вы можете просто использовать sprintf. Эта функция принимает векторы, поскольку это второй аргумент, поэтому очень легко добавить один и тот же символ к каждому значению в A.

B = sprintf('G%d ', A); 

Обратите внимание, что это оставит вас с завершающим пробелом после последней записи (т.е. 'G1 G2 G3 '), но это может быть легко удален, хотя с:

B(end) = []; 

См documentation on sprintf другие примеры.

Смежные вопросы