创build一个string数组

是否可以在for循环中在MATLAB中创build一个string数组?

例如,

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

我似乎无法这样做。

你需要使用单元格数组:

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

你可以通过一个循环创build一个字符数组:

 >>对于我= 1:10
 Names(i,:)='Sample Text';
结束
 >>名称

名字=

示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本

但是,使用REPMAT可以更好地实现这一点 :

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

名字=

示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本
示例文本

另外一个select:

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

这个老问题的另一个解决scheme是在Matlab 2016b中引入的新的容器string array 。 从我在官方的Matlab文档中看到的,这个容器类似于一个单元arrays,大部分与arrays相关的函数应该可以直接使用。 对于你的情况,新的解决scheme将是:

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

此解决scheme类似于Rich C的解决scheme应用于string数组。

正如Amro所提到的,最简单的方法是使用单元arrays。 但是, Budo碰到了MATLAB版本R2016b中引入的新string类 。 使用这个新对象,你可以非常容易地在一个循环中创build一个string数组,如下所示:

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

MATLAB最近新增了一些function:

R2016b中引入了string数组 (如Budo和gnovice已经提到的):

string数组存储一些文本,并提供一组用于处理文本作为数据的函数。 像任何其他types的数组一样,您可以索引,重塑和连接string数组。

另外,从R2017a开始,你可以用双引号""来创build一个string 。

因此,如果您的MATLAB版本是> = R2017a,以下将执行:

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

检查输出:

 >> Names Names = 1×3 string array "Sample Text" "Sample Text" "Sample Text" 

无需再处理单元arrays了。

创buildstringmatrix的最简单方法之一是:

x = [{'first string'} {'Second parameter} {'Third text'} {'Fourth component'}]