Matlab中的二维对象数组

时间:2013-03-06 22:36:03

标签: matlab

我已经创建了一个名为neuron的句柄子类,我希望将实例放入x,y可寻址数据结构中。对象与x,y网格中“下一个”的其他实例进行交互。我创建了另一个名为nnet的类,它有一个Network属性,我希望它是一个NxN神经元数组。每个神经元都有一个属性,它是一个与其他神经元“接下来”的句柄数组,但我也希望有一个网格数据结构,我可以用它来识别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数组中的任何东西,除了双重,因为我得到这个抱怨“从神经元转换成双倍是不可能的。”我可以使用内置数据结构的任何想法或如何修改和使这项工作? 谢谢!

2 个答案:

答案 0 :(得分:0)

在任何作业之前使网络成为单元格数组

obj.Network = cell(dimX, dimY);
for y = 1:dimY
    for x = 1:dimX
        obj.Network(x,y) = neuron(x,y);
    end
end

答案 1 :(得分:0)

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

obj.Network = neuron.empty;

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