创建一个字符串数组

时间:2011-08-17 23:47:12

标签: matlab

是否可以在for循环中在MATLAB中创建一个字符串数组?

例如,

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

我似乎无法这样做。

7 个答案:

答案 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 中引入(已提及Budognovice):

  

字符串数组存储文本片段并提供一组函数   使用文本作为数据。您可以索引,重塑和   像任何其他数组一样,连接字符串数组   类型。

此外,从 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);

此解决方案类似于应用于字符串数组的Rich C solution

答案 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'}]