大家好我正在编写一个matlab代码,当我编写这个程序时,它打印给我一个错误信息“Assignment有更多非单例rhs维度比非单例下标”任何人都可以帮助我吗?
%% INITIALIZATION
% Size of matrix A [rows, cols]
[ma, na] = size(A);
% Size of matrix B [rows, cols]
[mb, nb] = size(B);
% Create matrix C all zeros
C = zeros(ma+mb-1, na+nb-1);
[mc, nc] = size(C);
% Create matrix T.
T = [mb-1, nb-1];
% Add mb-1 rows of zeros up and down matrix A
% Add nb-1 cols of zeros left and right matrix A
padA = padarray(A, [mb-1 nb-1]);
% flip matrix B on both directions
flipB = flip(flip(B, 1), 2);
%% CONVOLUTION
for i = 1 : mb
for j = 1 : nb
for x = 1 : mc
for z = 1 : nc
T(i+x-1,j+z-1) = flipB(i,j) * padA;
C(x,z) = C(x,z) + T(i+x-1,j+z-1);
end
end
end
end
end
答案 0 :(得分:0)
错误来自以下行:
T(i+x-1,j+z-1) = flipB(i,j) * padA;
基本上,T(i+x-1,j+z-1)
和flipB(i,j) * padA
的大小不同。您可以通过插入size
函数来调试它,以便在循环迭代期间打印大小。例如:
size(T(i+x-1,j+z-1))
size(flipB(i,j) * padA)
一旦等号的rhs
和lhs
侧大小相同,错误就会消失。