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 的 sanger 规则,所以如果有人想讨论它或给他我的代码,他可以给我发消息:)
  2. 我收到以下错误

    使用 reshape 时出错 要 RESHAPE,元素的数量不得更改。

    火车错误(第 30 行)ins(:,p)=reshape(blocks(:,:,p)',1,ins')';

4

2 回答 2

0

将 blocks(:,:,p) 转换为列向量应该可以清除错误,只要 blocks(:,:,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,blocks因为无论有没有它,该命令都可以使用。

于 2013-10-03T14:56:10.673 回答