我正在使用2d执行3d矩阵乘法,但得到错误
[a b c] = size(im_f);
[a d]= size(H);
im_nf = zeros([a d c]);
im_nf = cellfun(@(im_f) im_f*H,mat2cell(im_f,a,b,ones(1,c)),'UniformOutput',false);
im_nf = cat(3,im_nf{:});
但它给出了错误:
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> homofil>@(im_f)im_f*H at 27
im_nf = cellfun(@(im_f) im_f*H,mat2cell(im_f,a,b,ones(1,c)),'UniformOutput',false);`??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> homofil>@(im_f)im_f*H at 27
im_nf = cellfun(@(im_f) im_f*H,mat2cell(im_f,a,b,ones(1,c)),'UniformOutput',false);
homofil
是文件名
im_f
的尺寸为[ 307 409 3 ]
H
的尺寸为[ 307 1227 ]
如何纠正此错误?
答案 0 :(得分:1)
在cellfun
中,您试图将im_f
大小[307 409]
乘以大小H
的{{1}} - 这就是为什么您有“内部矩阵尺寸”必须同意“错误。
更改[307 1227]
和im_f
的顺序:
H
或转置im_nf = cellfun(@(im_f) H*im_f,mat2cell(im_f,a,b,ones(1,c)),'UniformOutput',false);
:
im_f
BTW,im_nf = cellfun(@(im_f) im_f.'*H,mat2cell(im_f,a,b,ones(1,c)),'UniformOutput',false);
和mat2cell
的好用;)