【发布时间】:2010-08-10 19:21:15
【问题描述】:
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
什么都没有出来。我在命令窗口中输出代码并按回车键......窗口上没有任何内容。如何获得输出?
【问题讨论】:
-
作为一个社区,如果将代码编辑为以下内容会更好:while x ~= 0 x = 10; x = x - func(x) end 对于以后的读者来说更简洁,概念一致。
-
@MatlabDoug:这将有助于未来读者可能遇到与 OP 提出的问题类似的问题,但实际上还有一些其他特定于此代码的问题,OP 尚未意识到这些问题是问题。我会说它应该保持原样,以帮助这个特定的用户解决这些额外的错误。标题编辑(可能还有一些标签编辑)应该有助于概括问题。
-
@ishamahajan:更新代码的一个问题是,由于您将
globalerror初始化为 0,因此永远不会进入 while 循环。您必须将其初始化为非零值。但是,这是您遇到的最少的问题。即使理解所涉及的算法,您似乎也遇到了很大的困难,更不用说如何将它们从另一种语言翻译成 MATLAB。我觉得你需要花点时间学习一下MATLAB的基础知识,从online documentation开始,挺好的。