错误:调用期间未分配输出参数

Posted

技术标签:

【中文标题】错误:调用期间未分配输出参数【英文标题】:Error: Output Argument Not Assigned During Call 【发布时间】:2013-01-09 02:49:29 【问题描述】:

这是我的 k 最近邻算法代码:

function [preds, distances, indices] = knnfull(HandTrain,HandTest)
    nn_value = 10; % how many nearest      
    inputs = HandTrain(:,2:end);
    Y = HandTrain(:,1); 
    [preds, distances, indices] = knn_alg(inputs, y, HandTest, nn_value);
end

function [preds, D, I] = knn_alg(train_inputs, train_y, test_inputs, nn_value)
    num_train_inputs = size(train_inputs,2);
    num_train_examples = size(train_inputs,1)
    num_test_inputs = size(test_inputs,2);
    num_test_examples = size(test_inputs,1)
    preds = zeros(size(test_inputs,1),1);
    [D,I] = pdist2(train_inputs,test_inputs,'euclidean','Smallest',nn_value);
    preds = mode(train_y(I'),2);
end

如果你问我为什么有两个独立的函数,这是一个很好的问题。但无论如何,我得到了错误:

Error in knnkaggle>knn_alg (line 16) num_train_inputs = size(train_inputs,2); Output argument "indices" (and maybe others) not assigned during call to "C:...knn_alg". Error in knnkaggle (line 10) [preds, distances, indices] = knn_alg(inputs, y, HandTest, nn_value);

无法解决问题。

【问题讨论】:

我的猜测是pdist2 过早返回而没有为I 分配任何东西,因此会出现错误。能不能把I = 0放在调用pdist2之前,然后在pdist2前后打印I的值? 你能说出knnkaggle是什么,错误信息对应的是哪几行吗? 【参考方案1】:

这意味着通过您的函数的可能路径根本不为输出参数分配任何值。

【讨论】:

虽然给出了上面的代码,但这怎么可能?我总是给三个参数赋值。

以上是关于错误:调用期间未分配输出参数的主要内容,如果未能解决你的问题,请参考以下文章

调用期间未分配输出参数:Matlab

调用期间未分配的输出参数“y”(可能还有其他参数)

安装时 OMNeT++ 和 INET 示例中的参数未分配错误

C#使用输出变量调用存储过程时出错,未提供参数

OpenGL上下文创建期间未记录的错误

我收到有关 simulink 的错误消息“未在某些执行路径上分配输出参数”