Возможно ли создать массив строк в MATLAB в цикле for?
Например,
for i=1:10
Names(i)='Sample Text';
end
Кажется, я не могу это сделать.
Возможно ли создать массив строк в MATLAB в цикле for?
Например,
for i=1:10
Names(i)='Sample Text';
end
Кажется, я не могу это сделать.
Вам нужно использовать ячейки-массивы:
names = cell(10,1);
for i=1:10
names{i} = ['Sample Text ' num2str(i)];
end
Вы можете создать массив символов, который делает это через цикл:
>> 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
Другая опция:
names = repmat({'Sample Text'}, 10, 1)
Другим решением этого старого вопроса является новый контейнер string array
, введенный в Matlab 2016b. Из того, что я читал в официальном документе Matlab , этот контейнер похож на массив ячеек, и большинство функций, связанных с массивом, должны работать из коробка. Для вашего случая новое решение будет:
a=repmat('Some text', 10, 1);
Это решение похоже на Rich C решение, примененное к строковому массиву.
Как уже упоминалось Amro, наиболее кратким способом это использовать ячейки массивов. Однако Budo коснулся нового string
class, представленного в версии R2016b MATLAB. Используя этот новый объект, вы можете легко создать массив строк в цикле следующим образом:
for i = 1:10
Names(i) = string('Sample Text');
end
В 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"
Не нужно больше обращаться к массивам ячеек.
одним из простейших способов создания строковой матрицы является следующее:
x = [{'first string'} {'Второй параметр} {' Третий текст '} {' Четвертый компонент '}]