当您尝试将复合字符串存储到数组中时,它会将其存储为 Ascii 或 Unicode 字符编号的列表。因此,如果我尝试将字符串 'Hello world' 作为数组的第一行插入,那么第一行实际上将是:
>>> my_strs = [];
>>> my_strs(1,:) = "Hello world"
my_strs =
72 101 108 108 111 32 119 111 114 108 100
请注意,这隐含地构成my_strs
了一个 1×11 数组。如果我尝试添加一个字符串作为第二行,但它没有评估为具有 11 个字符的长度代码,它将给出一个错误:
>>> my_strs(2,:) = "Hi there"
error: A(I,J,...) = X: dimensions mismatch
所以你要么需要添加空格来填充你所有天的长度,当它们变成字符串(所以你所有的字符串都有统一的长度),或者做一些更方便的事情,比如将所有字符串存储到一个单元格数组中,它们可以有不同的长度.
要使用元胞数组执行此操作,您可以执行以下操作:
>>> my_strs = {};
>>> my_strs{1} = "Hello world"
my_strs =
{
[1,1] = Hello world
}
>>> my_strs{2} = "Hi there"
my_strs =
{
[1,1] = Hello world
[1,2] = Hi there
}
>>> my_strs{1,1}
ans = Hello world
>>> my_strs{1,2}
ans = Hi there
将其映射到您在上述问题中显示的循环中使用的索引约定应该很简单。
完全披露:我正在使用 Octave 测试上述代码,因为我个人更喜欢抵制 Matlab。如果您关心为什么会这样,您可以询问元数据或其他内容,但就这个问题而言,我认为 Octave 中的测试不会对正确答案产生任何影响。