我正在执行以下代码以获得图像与w
之间的矩阵乘法。
为什么我会收到Subscripted assignment dimension mismatch
错误。
[e,f] = size(outImg);
m = zeros(e,f);
w = [1 2 4 8; 16 32 64 128; 256 512 1024 2048; 4096 8192 16384 32768];
for i = 1:e-3
for j = 1:f-3
I = double(outImg((i:i+3),(j:j+3)));
m(i,j) = I * w;
end
end
答案 0 :(得分:0)
这是继续我的评论,现在了解你真正追求的是什么。您打算做的是执行I
和w
的逐个元素乘法,然后求和矩阵中的所有元素。我逐个元素的意思是,一个矩阵中的对应值乘以另一个矩阵中的对应位置,这就是结束结果。因此,您只需将*
运算符更改为.*
,然后对整个矩阵求和。换句话说,这样做:
[e,f] = size(outImg);
m = zeros(e,f);
w = [1 2 4 8; 16 32 64 128; 256 512 1024 2048; 4096 8192 16384 32768];
for i = 1:e-3
for j = 1:f-3
I = double(outImg((i:i+3),(j:j+3)));
m(i,j) = sum(sum(I .* w)); %// Change
end
end
请注意嵌套的sum
调用。这是因为在对矩阵求和时,默认情况下,它会对每列的所有行求和,并生成包含此结果的单个行向量。如果要对矩阵中的每个值求和,则必须再次调用sum
来对行向量求和,以计算矩阵的总和。现在这应该等于单个值,您不应再得到尺寸不匹配错误。