1

对于分类,我正在为 MATLAB 中的分类器构建多个模型。我ClassificationKNN为此使用课程。我非常想在一个矩阵中存储多个模型(或此类的对象)。通常,您可以使用花括号 ({}) 在矩阵内访问和创建矩阵。我的循环如下所示:

models = []
for i = 1:length(x)
    models = [models, {ClassificationKNN.fit(x,y)}]
end

不幸的是,这会返回一个大小为 (1,3) 的矩阵模型,但所有单元格都是空的,这意味着模型丢失了……如何确保每个模型都存储在矩阵中?我需要这样做,因为我需要稍后在计算中使用所有模型,并且矩阵中的位置很重要......有
什么想法吗?

4

2 回答 2

0

你想要一个模型的单元阵列,对吧?看起来确实是这样,如果可行,试试这个:

models = {}
for ii = 1:length(x)
    models = [models, {ClassificationKNN.fit(x,y)}]
end

ClassificationKNN.fit(x,y)此外,您每次都使用相同的参数循环调用,这只是一个测试,还是一个示例的伪代码。正如评论所说,最好预先分配如下:

models = cell(length(x),1);
for ii = 1:length(x)
    models{ii} = ClassificationKNN.fit(x,y);
end

但是,无论哪种方式都可能很好。

于 2012-09-20T16:02:07.847 回答
0

感谢 macduffs 的帖子,我终于弄清楚发生了什么。在阅读他的提议时,我意识到如果获得对象的单元格数组,那确实应该是正确的方法。
尝试后,在变量编辑器中打开数组时再次显示为空。我尝试调用数组中的第一个单元格以查看它是否确实为空,而实际上不是。它返回了我存储在其中的对象。这意味着问题得到了回答。
然后我恢复到我自己的方法,看看它是否也有效并且确实有效。当调用一个单元格时,它也返回一个对象。

底线:不要相信变量编辑器^^。

于 2012-09-21T09:34:09.567 回答