0

重塑元胞数组时遇到问题:

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);

和错误:

使用 ==> 重塑错误

要 RESHAPE,元素的数量不得更改。

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

>> size(im)

ans =

    35    35

>> size(crossfield)

ans =

    35    35     3

>> size(rmatrix)

ans =

    35    35     3
>> size(w)

ans =

     1     1

我怎样才能重塑b?

4

1 回答 1

1

请注意,您的三个内部循环与做的效果相同

field = crossfield .* rmatrix;

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

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

b = cell(w,h,d);
b(:,:,:) = {crossfield .* rmatrix};
于 2012-07-03T09:11:49.183 回答