getting Subscripted assignment dimension mismatch.

1 view (last 30 days)
my codes are as follow :
when i use this , the loop works
for i=1:3
vec=(1+i):(2+i);
mat(i,:)=vec;
vec=[];
end
EDU>> mat
mat =
2 3
3 4
4 5
but when i use this , it shows the error message Subscripted assignment dimension mismatch.
EDU>> for i=1:3
vec=(1+i):(3+i);
mat(i,:)=vec;
vec=[];
end
Subscripted assignment dimension mismatch.
EDU>> for i=1:5
vec=(1+i):(3+i);
mat(i,:)=vec;
vec=[];
end
Subscripted assignment dimension mismatch.
how can i rectify this ? i need this concept for a huge loop and it shows similar error message when i run my code the matrix generally runs until 5th or 6th row
HELP PLEASE !!!
  1 Comment
Stephen23
Stephen23 on 13 Oct 2014
Edited: Stephen23 on 13 Oct 2014
Do NOT use i as the loop variable name. This is already the name of the inbuilt imaginary unit . Overriding the inbuilt variable can create difficult-to-fix errors and can be slower to resolve. Using i makes it hard to search for the variable name. Use ii or kk instead.

Sign in to comment.

Accepted Answer

Orion
Orion on 13 Oct 2014
Edited: Orion on 13 Oct 2014
Hi,
if you do
for i=1:3
vec=(1+i):(2+i);
mat(i,:)=vec;
vec=[];
end
for i=1:3
vec=(1+i):(3+i);
mat(i,:)=vec;
vec=[];
end
the you get an error.
You need to clear your workspace or define the mat variable before the loop
for i=1:3
vec=(1+i):(2+i);
mat(i,:)=vec;
vec=[];
end
clear mat
for i=1:3
vec=(1+i):(3+i);
mat(i,:)=vec;
vec=[];
end
The error occurs because after the first loop, mat is a matrix with 2 columns.
And in the second loop, you use a 3 element vector vec to fill the line.
so the dimensions mismatch.
Note : you should put your question in code form, so it is more readable for everyone.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!