重塑单元格阵列时遇到问题:
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?
答案 0 :(得分:1)
请注意,您的三个内部循环与执行
具有相同的效果field = crossfield .* rmatrix;
并且您的三个外部循环只是将单元格数组b
的每个元素设置为相同的值。因此,您的代码可以简化为:
[w h] = size(im);
d = size(crossfield,3);
b = cell(w,h,d);
b(:,:,:) = {crossfield .* rmatrix};