赋值具有比非单例下标更多的非单例rhs维度

时间:2017-02-27 17:31:58

标签: matlab

大家好我正在编写一个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

1 个答案:

答案 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)

一旦等号的rhslhs侧大小相同,错误就会消失。