сгенерировать вектор имени MATLAB - PullRequest
0 голосов
/ 09 марта 2011

Как бы я сгенерировал вектор типа

x1,x2,x3,x4,...,xn 

, проблема состоит в объединении ',' и 'x' char

n=100
A = (1:n);

Ответы [ 3 ]

5 голосов
/ 09 марта 2011

Это небольшое улучшение @ ответа Джонаса . SPRINTF сделает для вас повторение, избегая необходимости маски:

>> n = 5;
>> out = sprintf('x%u,', 1:n);
>> out(end) = []

out =

x1,x2,x3,x4,x5
1 голос
/ 09 марта 2011

Лучший ответ: не делай этого.Хотя вы МОЖЕТЕ сделать это, это, скорее всего, вызовет у вас больше страданий, чем вы хотите.Глупо иметь сотни таких переменных, когда вы можете использовать массив для индексации тех же данных.Таким образом, возможно, x {1}, x {2}, ....

1 голос
/ 09 марта 2011

Чтобы сгенерировать строку 'x1,x2' и т. Д., Вы можете создать маску для SPRINTF , используя REPMAT примерно так:

n = 5;

mask = repmat('x%i,',1,n);

out = sprintf(mask,1:n);

out = out(1:end-1)

out =
x1,x2,x3,x4,x5

Обратите внимание, что в случае, если вына самом деле вы хотите создать вектор, содержащий строки 'x1','x2' и т. д., вы бы использовали ARRAYFUN для генерации массива ячеек:

out = arrayfun(@(x)sprintf('x%i',x),1:n,'uniformOutput',false)
out = 
    'x1'    'x2'    'x3'    'x4'    'x5'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...