【问题标题】:reshape() command causes an error being evoked from a loopreshape() 命令导致从循环中引发错误
【发布时间】:2013-10-03 11:09:03
【问题描述】:
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,元素的数量不能改变。

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

【问题讨论】:

    标签: matlab neural-network reshape


    【解决方案1】:

    将 blocks(:,:,p) 转换为列向量应该可以清除错误,只要 blocks(:,:,p) 中的元素数量与 ins 的行长度相同

    col_vec = blocks(:,:,p);
    

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

    【讨论】:

    • 它不起作用,..p = 1 下标分配维度不匹配。火车错误(第 33 行)ins(:,p) = col_vec(:);
    【解决方案2】:

    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,出于好奇)的大小是多少?另外,请确保您确实需要 blocks 上的 ',因为无论有没有它,该命令都可以使用。

    【讨论】:

    • sinze(ins,1) =1 所以它不起作用..我得到同样的错误“元素不能改变”,我得到 p=1.. 块:20x20 双插入:160
    • 您是初始化ins 还是尝试扩展它?您可能需要预先分配ins。另外,blocks 呢?它是否在某处初始化?
    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2011-04-13
    相关资源
    最近更新 更多