2017-02-27 33 views
0

你好,大家好我寫的MATLAB代碼,當我寫這個程序將打印給我一個錯誤消息「分配有更多的非單RHS尺寸比非單身下標「誰能幫助我?分配有更多的非單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

在哪一行?!?!在T(i + x-1,j + z-1)= flipB(i,j)* padA中的 –

+0

。 – micpap4409

+0

什麼是'大小(flipB(I,J)* padA'? –

回答

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側面大小相同。