创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'}]