我有一个12X1的单元格数组,每个单元格中都包含字符串。我还定义了四个字符串变量,我希望将它们添加到单元格数组的末尾,以使其成为16X1数组。我在代码下方发布了有关如何附加四个变量的信息;但是我正在努力尽我所能学习这种语言,并且我很好奇是否有一种比我写的更加“优雅”的方式来添加这些变量。
git branch -m 48a989d some-better-name
此外,如果您看到其他可以使我的代码更有效的方法,我将不胜枚举!
在此先感谢您,是否还有其他我可以提供的信息。
答案 0 :(得分:1)
这是您的代码,简化了:
c = cell(12,1);
c{length(c) + 1} = 'a';
c{length(c) + 2} = 'b';
c{length(c) + 3} = 'c';
c{length(c) + 4} = 'd';
让我们看看它的作用:
length(c)
% ans = 22
糟糕!第一行添加一个元素;第二行在结尾处添加元素2,然后在字符串中添加一个空元素;第三行在末尾添加元素3,先添加两个空元素,然后添加字符串。等等-请注意,length(c)
每次都会在扩展数组上求值!
您要执行的操作是:
c = cell(12,1);
c{length(c) + 1} = 'a';
c{length(c) + 1} = 'b';
c{length(c) + 1} = 'c';
c{length(c) + 1} = 'd';
或更简单地
c = cell(12,1);
c{end + 1} = 'a';
c{end + 1} = 'b';
c{end + 1} = 'c';
c{end + 1} = 'd';
在这里,我们每次都附加一个元素。为了防止增加阵列大小4次,可以按相反的顺序分配它们:
c = cell(12,1);
c{end + 4} = 'd';
c{end - 1} = 'c';
c{end - 2} = 'b';
c{end - 3} = 'a';
这次,我们将在第一个语句中添加4个元素,然后再填充它们。
另一个选择是
c = cell(12,1);
c(end + (1:4)) = {'a','b','c','d'};
(请在此处注意用于索引的圆括号)。现在,我们要一次性添加4个元素。