单元阵列问题-Matlab



在循环中,我正在生成一个输出(例如outputLine),我希望将其累积/添加到单元数组中。

因此,我使用这个小片段:

for...
    outputLine=strcat(FileName,',',coordString);
    outputTable=vertcat(outputTable,outputLine);
end

我得到了明显的错误,因为outputTable没有声明,如果我在脚本的开头添加outputTable=' ';

我得到这样的错误"矩阵的尺寸被连接不一致。"

如何在单元格数组中累积输出?

出现错误的原因是字符串是char类型的数组。如果要垂直连接字符串,它们必须具有相同的长度,才能组成正确的char矩阵,就像任何其他类型的数组一样。

您可能想阅读有关如何为单元格数组编制索引以及如何组合单元格数组的Mathworks页面。

有几种方法可以附加到单元格数组中。首先,必须将数组定义为单元数组。如果你知道它会有多大(这是最好的情况),在循环之前,做

outputTable = cell(N, 1);

否则,每次时都必须重新分配阵列

outputTable = {}

对于已知大小的情况,

outputTable{i} = outputLine;

这里,i将是for循环中的索引,或者是在循环之前初始化的外部计数器,并在进行赋值时递增。如果你事先不知道列表的大小,但效率不高,这也会起作用。

对于只想附加到列表的情况,请执行

outputTable = [outputTable; outputLine]

符号[;]vertcat的语法糖,您可以显式使用它:

outputTable = vertcat(outputTable, outputLine)

最新更新