Создать массив строк - PullRequest
       1

Создать массив строк

37 голосов
/ 18 августа 2011

Возможно ли создать массив строк в MATLAB в цикле for?

Например,

for i=1:10
Names(i)='Sample Text';
end

Кажется, я не могу сделать это таким образом.

Ответы [ 7 ]

47 голосов
/ 18 августа 2011

Вам необходимо использовать массивы:

names = cell(10,1);
for i=1:10
    names{i} = ['Sample Text ' num2str(i)];
end
9 голосов
/ 18 августа 2011

Вы можете создать массив символов, который делает это через цикл:

>> for i=1:10
Names(i,:)='Sample Text';
end
>> Names

Names =

Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text

Однако, это было бы лучше реализовать, используя REPMAT :

>> Names = repmat('Sample Text', 10, 1)

Names =

Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
8 голосов
/ 18 августа 2011

Другой вариант:

names = repmat({'Sample Text'}, 10, 1)
3 голосов
/ 15 ноября 2017

Недавно в MATLAB были добавлены новые функции:

Массивы строк были введены в R2016b (как уже упоминалось Budo и gnovice ):

Массивы строк хранят фрагменты текста и предоставляют набор функций для работа с текстом в качестве данных. Вы можете индексировать, изменять и объединять массивы строк так же, как вы можете с массивами любых других тип.

Кроме того, начиная с R2017a , вы можете создать строку , используя двойные кавычки "".

Поэтому, если ваша версия MATLAB> = R2017a, будет делать следующее:

for i = 1:3
    Names(i) = "Sample Text";
end

Проверьте вывод:

>> Names

Names = 

  1×3 string array

    "Sample Text"    "Sample Text"    "Sample Text"

Больше не нужно иметь дело с массивами ячеек.

2 голосов
/ 19 декабря 2016

Другим решением этого старого вопроса является новый контейнер string array, представленный в Matlab 2016b.Из того, что я прочитал в официальных документах Matlab , этот контейнер напоминает массив ячеек, и большинство функций, связанных с массивами, должны работать «из коробки».Для вашего случая новое решение будет:

a=repmat('Some text', 10, 1);

Это решение напоминает Rich C решение , примененное к массиву строк.

1 голос
/ 19 декабря 2016

Как уже упоминалось Amro , наиболее краткий способ сделать это - использовать массивы ячеек. Однако Budo коснулся нового string класса , представленного в версии R2016b MATLAB. Используя этот новый объект, вы можете очень легко создать массив строк в цикле следующим образом:

for i = 1:10
  Names(i) = string('Sample Text');
end
0 голосов
/ 17 декабря 2015

Один из самых простых способов создания строковой матрицы заключается в следующем:

x = [{'первая строка'} {'второй параметр} {' третий текст '} {' четвертый компонент '}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...