0

インスタンスをx、yアドレス指定可能なデータ構造に配置したいニューロンと呼ばれるハンドルサブクラスを作成しました。オブジェクトは、x、yグリッドでオブジェクトの「隣」にある他のインスタンスと相互作用します。ニューロンのNxN配列になりたいというNetworkプロパティを持つnnetという別のクラスを作成しました。各ニューロンには、その隣にある他のニューロンのハンドルの1次元配列であるプロパティがありますが、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は、「ニューロンからdoubleに変換することはできません」という苦情を受けたため、double以外のn-dim配列には何も好きではないようです。使用できる組み込みのデータ構造のアイデアや、これを変更して機能させる方法はありますか?ありがとう!

4

2 に答える 2

0

配列への要素の追加を開始する前に、sの空の配列を作成しますneuron

obj.Network = neuron.empty;

emptyはすべてのクラスの組み込みメソッドであり、このために特別に設計されています。

于 2013-03-07T09:19:53.273 に答える
0

代入の前に Network を cell 配列にする

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 に答える