0

我创建了一个名为神经元的句柄子类,我想将其实例放入 x,y 可寻址数据结构中。对象与在 x,y 网格中“旁边”的其他实例进行交互。我创建了另一个名为 nnet 的类,它有一个我想成为 NxN 神经元数组的 Network 属性。每个神经元都有一个属性,它是“旁边”其他神经元的一维句柄数组,但我还想要一个网格数据结构,我可以用它来通过它们的 x,y 来识别神经元句柄。类的开头看起来像这样,然后构造函数去识别所有邻居并将句柄附加到它们。

classdef nnet < handle
%NNET structure of interconnected neuron objects


properties
    Network;
end

properties(Constant=true)
    AllPositions = cellstr(['NW'; 'N '; 'NE';  ...
                            'W ';       'E ';  ...
                            'SW'; 'S '; 'SE']);
end

methods
    function obj = nnet(dimX, dimY)
        % Constructor creates and fills a net with X by Y neurons
        % and automatically connects neighbors
        % fill initial array
        for y = 1:dimY
            for x = 1:dimX
                obj.Network(x,y) = neuron(x,y);
            end
        end

Matlab 似乎不喜欢 n-dim 数组中除了 double 之外的任何东西,因为我收到了这样的抱怨“无法从神经元转换为 double”。我可以使用的内置数据结构的任何想法或如何修改和使其工作?谢谢!

4

2 回答 2

0

在任何分配之前使 Network 成为一个单元格数组

obj.Network = cell(dimX, dimY);
for y = 1:dimY
    for x = 1:dimX
        obj.Network(x,y) = neuron(x,y);
    end
end
于 2013-03-06T22:40:12.780 回答
0

在开始向数组添加元素之前,请创建一个空数组neurons。

obj.Network = neuron.empty;

empty是所有类的内置方法,专门为此设计的。

于 2013-03-07T09:19:53.273 回答