使用==>时出错在MATLAB中重塑

时间:2012-07-03 08:57:13

标签: matlab reshape

重塑单元格阵列时遇到问题:

w = size(im,1);                                % width size
h = size(im,2);
d = size(crossfield,3);
for pxRow = 1:h % fixed pixel row
  for pxCol = 1:w % fixed pixel column
    for pxBreadth = 1:d    
      for r = 1:h % row of distant pixel
        for c = 1:w % column of distant pixel
          for z = 1:d

            field(c,r,z) = crossfield(c,r,z).*rmatrix(c,r,z);                

          end
        end
      end
    b(i) = {field}; % filling a cell array with results. read below
    i = i+1;
    end
  end
end

 b = reshape(b, w, h,z);

和错误:

  

使用==>时出错重塑

     

要重新调整元素的数量,不得更改。

其他一些可能有用的信息:

>> size(im)

ans =

    35    35

>> size(crossfield)

ans =

    35    35     3

>> size(rmatrix)

ans =

    35    35     3
>> size(w)

ans =

     1     1

我如何重塑b?

1 个答案:

答案 0 :(得分:1)

请注意,您的三个内部循环与执行

具有相同的效果
field = crossfield .* rmatrix;

并且您的三个外部循环只是将单元格数组b的每个元素设置为相同的值。因此,您的代码可以简化为:

[w h] = size(im);
d = size(crossfield,3);

b = cell(w,h,d);
b(:,:,:) = {crossfield .* rmatrix};