Matlab 赋值的非单例rhs维度多于非单例下标
大家好,我正在编写一个matlab代码,当我编写这个程序时,它会向我输出一条错误消息,即“赋值的非单态rhs维度比非单态下标的多”,有人能帮我吗Matlab 赋值的非单例rhs维度多于非单例下标,matlab,Matlab,大家好,我正在编写一个matlab代码,当我编写这个程序时,它会向我输出一条错误消息,即“赋值的非单态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
%% 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
错误来自以下行:
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
一侧大小相同,错误就会消失。在哪一行?!?!T(i+x-1,j+z-1)=flipB(i,j)*padA;什么是大小(flipB(i,j)*padA
?flipB=[3,3],padA是A的padArray,它是256x256No,不是每个的大小,而是结果的大小。