2

CSVファイルから読み込んで、X と T に分割する2 つのデータセットがあります。

X (3x5000) double
T (1x5000) double

この機能を設定しようとしていますが、できません

http://www.mathworks.co.uk/help/toolbox/nnet/ref/layrecnet.html

X には 3 つの機能と 5000 の例があります。T には 1 つの機能と 5000 の例があります。たとえば、ターゲットは 20 ステップ先のフィーチャ 1 です。だから基本的にX(1,21) == T(1)

[X,T] = simpleseries_dataset;

これは完全に機能します。この場合、1x100、1x100 があります。

ただし、独自のデータセットを使用すると、次のようになります。

X = data(:,1:3)';
T = data(:,4)';
net = layrecnet(1:2,10);
[Xs,Xi,Ai,Ts] = preparets(net,X,T);

??? Index exceeds matrix dimensions.

Error in ==> preparets at 273
  ti = tt(:,FBS+((1-net.numLayerDelays):0));

わかりません、何が間違っていますか?

アップデート

サンプル データセットが T (1x100) cellであるのに対し、私のデータ セットは T (1x5000) doubleであることに気付きました。ダブルとセルの違いは何ですか?

4

3 に答える 3

2

私はそれを解決しました:

X = num2cell(X);
T = num2cell(T);

理由はわかりません。それはMATLAB構文でなければなりません。

于 2012-04-09T22:16:00.300 に答える
0

「(...)MATLAB 構文である必要があります...」を明確にするには:

ここでの問題は、double から cell 配列への変換です。ここで説明されているように、セルには任意のタイプの値を含めることができるため、Matlab はこれを自動的に行いません: http://www.mathworks.com/help/matlab/matlab_prog/what-is-a-cell-array.html

したがって、回答で述べたように、num2cell() を使用して double 配列をセル配列に変換するか、cell() を使用して最初から X と T をセル配列として割り当て、double 値をコピーすることができます。ANN パッケージの多くのプロット関数と同様に、preparets は入力として cell 配列を想定しているため、この明示的な型キャストが必要です。

于 2015-04-27T13:37:35.840 に答える