Подтвердить что ты не робот

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

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

Например,

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

Кажется, я не могу это сделать.

4b9b3361

Ответ 1

Вам нужно использовать ячейки-массивы:

names = cell(10,1);
for i=1:10
    names{i} = ['Sample Text ' num2str(i)];
end

Ответ 2

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

>> 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

Ответ 3

Другая опция:

names = repmat({'Sample Text'}, 10, 1)

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

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

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

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

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

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

>> Names

Names = 

  1×3 string array

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

Не нужно больше обращаться к массивам ячеек.

Ответ 7

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

x = [{'first string'} {'Второй параметр} {' Третий текст '} {' Четвертый компонент '}]