C++ 理解代码时遇到的问题

C++ 理解代码时遇到的问题,c++,C++,我不明白上面代码中这行的意思: i = 0; while (fscanf(fp, "%f %f %d", &x[i], &y[i], &outputs[i]) != EOF) { if (outputs[i] == 0) { outputs[i] = -1; } i++; } patternCount = i; 它代表什么。输出是矩阵或向量 守则的参考资料如下: 所以它是一个向量文件???据我所知,代码是从一个文件读取的,文件应

我不明白上面代码中这行的意思:

i = 0;
while (fscanf(fp, "%f %f %d", &x[i], &y[i], &outputs[i]) != EOF) {
    if (outputs[i] == 0) {
        outputs[i] = -1;
    }
    i++;
}
patternCount = i;
它代表什么。输出是矩阵或向量

守则的参考资料如下:


所以它是一个向量文件???

据我所知,代码是从一个文件读取的,文件应该有一个重复的模式,每个模式由3个数字组成

循环将每个模式中的第一个数字复制到x,第二个复制到y,最后一个复制到输出。但是,每当第三个数字为零时,它就会被更改为-1


patternCount将在文件中存储读取的模式数

感知器是来自人工智能/神经网络的术语。它的运作方式与大脑中单个神经元的运作方式大致相同

它有多个输入和一个输出

这个文件所做的就是指定给定输入集的输出。这就是为什么
x/y
output
的名称不同的原因

至于它为什么将输出从0变为-1(顺便说一下,这就是它所做的一切:将第三个文件列中的零变为负一),我不确定。感知器的输出几乎总是反馈给其他感知器,因此将-1传递给期望为0或1的对象是一个。。。有趣的。。。idea。


输出定义为包含整数值的一维数组

I have a output file that has 3 columns:

1 0 0
0 0 1
0 1 0

可以将数组中的每个索引视为与文件中读取的行相对应

如果i==0,那么

  i       x              y      outputs
  --------------------------------------
  0 | -8.818681   3.025210     1
  1 |  3.653846  -2.969188     0
  2 |  ...           ...           .
 .. |  ...           ...           .
208 | -6.565934  -4.649860     1

用户Amro发布的精彩代码和信息解释了输出的限制和功能

…偏差项,即连接到值为1的输入的第三个权重分量。(+1/-1)


数据文件中的输出值已分配为一个/零值。 因此,有问题的代码检查从文件读取的输出值是否等于零,并重新分配给-1

x[0]       == -8.818681
y[0]       == 3.025210
outputs[0] == 1

我不理解Matlab和C++如何在同一个问题……是一个<代码> 1-D < /Cord>数组,它就像数学中的向量。它改变了
v_i
,其中
v
是向量,
i
是索引。哦,对不起……我现在应该去掉那个标签了……但是为什么,输出[i]=0=>输出[i]=-1???谢谢……你能看到我现在发布的另一个问题吗……我非常需要帮助。我很乐意帮忙,@ishamahajan,但不幸的是,我不知道。在这个问题上,我很想帮忙,但我对Matlab一无所知。
  i       x              y      outputs
  --------------------------------------
  0 | -8.818681   3.025210     1
  1 |  3.653846  -2.969188     0
  2 |  ...           ...           .
 .. |  ...           ...           .
208 | -6.565934  -4.649860     1
x[0]       == -8.818681
y[0]       == 3.025210
outputs[0] == 1
if (outputs[i] == 0)
    outputs[i] = -1;