Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

How to overcome the error message in the script below -Matrix dimension error - due to different size array manipulation

Asked by krishnamurthy on 5 Jul 2012

How to overcome the error message in the script below;

m=4;
PT_mj=[0  0.01  0.02  0.03
       0   0    0.045 0.05
       0   0     0    0.06];
PT_jm=PT_mj' ;   
flr_jm=zeros(4,3);  
for i=2:m 
   for j=1:(m-1)
        if j~=i 
            if i~=(m-2)  | j~=(m-1) 
                deltalambda_2(i)=PT_mj(i,j)-(1-flr_jm(i,j))*PT_jm(i,j)  
            end
        end
   end
end

1 Comment

Jan Simon on 5 Jul 2012

Please post the complete error message and mention, which line causes the error. I currently do not see a problem, which could cause the (partially) posted message. Please edit the original message and do not provide the additional information as comment or answer.

Please choose a short title, and include all information required to understand the problem, in the body of the question. Thanks.

krishnamurthy

Products

No products are associated with this question.

2 Answers

Answer by Mark Whirdy on 5 Jul 2012

Hi there problem is with

i=2:m 

m here is 4, but the size of PT_mj is [3,4] so the matrix access below won't work

PT_mj(i,j)

What are you trying to do generally? (if its not recursive we can do it without loops probably) Mark

1 Comment

Jan Simon on 5 Jul 2012

I do not understand, why "i=2:m" should cause troubles here. Could you elaborate this? The error message does not belong to an out-of-range indexing.

Mark Whirdy
Answer by Mark Whirdy on 7 Jul 2012

Hi Jan

The error I get is

??? Index exceeds matrix dimensions.

Since PT_mj is a [3*4] matrix and we are trying to access PT_mj(i,j) where i =4, I get this error. I take it you're getting a different error then?

Changing

deltalambda_2(i)=PT_mj(i,j)-(1-flr_jm(i,j))*PT_jm(i,j)  

to

deltalambda_2(i)=PT_jm(i,j)-(1-flr_jm(i,j))*PT_jm(i,j)  

prevents the error, but since I can't get my head around the intended behaviour of the code I doubt if this is really a fix. Especially since with this "fix, " deltalambda_2 is now all zeroes, and that line could be further resolved to

deltalambda_2(i)=flr_jm(i,j)*PT_jm(i,j)  

which is a kind of unlikely trivial simplification unless the algorithm is totally misspecified. Without understanding more fully the context, I can't make any progress myself. Maybe you'll have more luck.

0 Comments

Mark Whirdy

Contact us