load X_Q2.data
load T_Q2.data
x = X_Q2(:,1);
y = X_Q2(:,2);
learningrate = 0.2;
max_iteration = 50;
% initialize parameters
count = length(x);
weights = rand(1,3); % creates a 1-by-3 array with random weights
globalerror = 0;
iter = 0;
while globalerror ~= 0 && iter <= max_iteration
iter = iter + 1;
globalerror = 0;
for p = 1:count
output = calculateOutput(weights,x(p),y(p));
localerror = T_Q2(p) - output
weights(1)= weights(1) + learningrate *localerror*x(p);
weights(2)= weights(1) + learningrate *localerror*y(p);
weights(3)= weights(1) + learningrate *localerror;
globalerror = globalerror + (localerror*localerror);
end
end
我在其他文件中输出了这个函数。
function result = calculateOutput (weights, x, y)
s = x * weights(1) + y * weights(2) + weights(3);
if s >= 0
result = 1;
else
result = -1;
end
什么都没有出来。我在命令窗口中输出代码并按下输入....窗口上没有任何选择。我如何获得输出?
答案 0 :(得分:4)
您不能在while循环的条件检查中使用变量globalerror
,因为在循环之前,您没有将该变量定义为任何内容。这就是为什么你得到错误“未定义的函数或变量'globalerror'”。在尝试在任何语句中使用它之前,您必须将globalerror
初始化为某个值。
另外,正如我在my answer to your previous question中提到的,你不能在脚本中声明函数。尝试从上面的脚本中删除函数calculateOutput
并将其放在名为calculateOutput.m
的文件中,然后将其保存在MATLAB path上的某个位置。
我看到了一些其他问题:
我不知道你要用这条线做什么:
localerror = output(p) - output
因为变量output
是代码中的标量,而不是可由p
索引的向量。