Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 赋值的非单例rhs维度多于非单例下标_Matlab - Fatal编程技术网

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

大家好,我正在编写一个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-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,不是每个的大小,而是结果的大小。