是否可以在for循环中在MATLAB中创建一个字符串数组?
例如,
for i=1:10
Names(i)='Sample Text';
end
我似乎无法这样做。
答案 0 :(得分:46)
您需要使用单元格数组:
names = cell(10,1);
for i=1:10
names{i} = ['Sample Text ' num2str(i)];
end
答案 1 :(得分:9)
您可以创建一个通过循环执行此操作的字符数组:
>> 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
答案 2 :(得分:8)
另一种选择:
names = repmat({'Sample Text'}, 10, 1)
答案 3 :(得分:3)
最近在MATLAB中添加了新功能:
String arrays在 R2016b 中引入(已提及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"
不再需要处理细胞阵列了。
答案 4 :(得分:2)
这个老问题的另一个解决方案是Matlab 2016b中引入的新容器string array
。从我在official Matlab docs中读到的内容来看,这个容器类似于一个单元格数组,大多数与数组相关的函数应该是开箱即用的。对于您的情况,新的解决方案将是:
a=repmat('Some text', 10, 1);
答案 5 :(得分:1)
正如Amro已经提到的,最简洁的方法是使用单元格数组。但是,Budo触及了MATLAB版本R2016b中引入的新string
class。使用这个新对象,您可以非常轻松地在循环中创建一个字符串数组,如下所示:
for i = 1:10
Names(i) = string('Sample Text');
end
答案 6 :(得分:0)
创建字符串矩阵的最简单方法之一如下:
x = [{'first string'} {'Second parameter} {'Third text'} {'Fourth component'}]