0
psz=length(pic)

p=0; %masking counter
for i=1:outs:(psz) % dividing in blocks
    for j=1:outs:(psz)
        p=p+1
        blocks(:,:,p)=pic(i:i+outs-1,j:j+outs-1);
        ins(:,p)=reshape(blocks(:,:,p)',1,ins')';
    end
end
  1. まず、ニューラル ネットワークを使用して pca のサンガー ルールを再現しようとしています。そのため、誰かがそれについて議論したり、私のコードを教えたりしたい場合は、私にメッセージを送ることができます :)
  2. 次のエラーが表示されます

    reshape 使用時のエラー RESHAPE では、要素の数を変更してはなりません。

    トレインのエラー (30 行目) ins(:,p)=reshape(blocks(:,:,p)',1,ins')';

4

2 に答える 2

0

ブロック (:,:,p) を列ベクトルに変換すると、ブロック (:,:,p) に ins の行の長さと同じ数の要素がある限り、エラーが解消されます。

col_vec = blocks(:,:,p);

ins(:,p) = col_vec(:);

于 2013-10-03T11:46:29.097 に答える
0

のサイズblocks(:,:,p)outs-by-outsなので、列ベクトルを作成するには、(outs*outs)-by-でなければなりません1。これを行うには、コマンドは次のようになります。

ins(:,p)=reshape(blocks(:,:,p)',outs*outs,1); % no need for '

ただしsize(ins,1)、それが機能しないことを確認してouts*outsください。ins(とblocks好奇心から)のサイズは?また、コマンドは on の有無にかかわらず機能するため、本当に'onが必要であることを確認してください。blocks

于 2013-10-03T14:56:10.673 に答える