MATLAB Answers

rabia
0

how can i remove this error in matlab?

Asked by rabia
on 14 Jul 2012
for i=1:n-1
c(i,:)=blanks(n*n);
end

  0 Comments

Sign in to comment.

2 Answers

Answer by Sargondjani on 14 Jul 2012

ermm, what error? and what do you actually want the line to achieve? i mean, the code wants to assign a matrix with blanks to column vector...

  3 Comments

rabia
on 14 Jul 2012
the error is "Subscripted assignment dimension mismatch"?
Set a breakpoint on that line. In the command window, what does this say
whos c
whos n
Are you absolutely sure c has at least n-1 rows and n*n columns, and are you absolutely sure n is not an array? How did you get c and n in the first place, before you got to the for loop?
rabia
on 15 Jul 2012
it gives the ans 1x1 for all c,n and i !

Sign in to comment.


Answer by Star Strider
on 14 Jul 2012

This works fine for me:
n=4;
for k1 = 1:n-1
c(k1,:) = blanks(n*n);
end
Variable ‘c’ is listed as a [3 x 16] character array.
The index ‘i’ may be the problem. Please don't use ‘i’ or ‘j’ for indexing, since MATLAB uses them for its imaginary operators.
If that's not the problem, did you use ‘c’ somewhere earlier in you code as a constant or as vector or as a smaller matrix?

  4 Comments

Show 1 older comment
I'm running out of ideas.
You need to know more about what is going on in the loop. Temporarily at least, change your loop to:
for i=1:n-1
c(i,:)=blanks(n*n);
csize = [i size(c)]
end
Leave the semicolon off the end of the ‘csize’ statement so it will display. If ‘n’ isn't too large, this shouldn't be too much of a problem. With luck, you will know when in the loop the error occurs, and something about ‘c’.
He said the code worked separately but not in his program. So obviously his program is different than the simplified snippet he shared with us. rabia really needs to learn how to debug using the built in debugger rather than the Answers forum. Debugging with the debugger is so much faster and more efficient than debugging via forum messages. rabia, is there some reason why you're not using the debugger to solve your problem?
My impression was that he followed your previous suggestion, set a breakpoint, and found that ‘c’ ‘n’, and ‘i’ were all [1x1]. That may have been the first loop iteration. He might have discovered his error (still undetermined) if he had stepped through his loop using the debugger and examined ‘c’ at each iteration. He didn't, so I'm offering an alternative approach such as I used in pre-debugger MATLAB.
My latest suggestion is to provide him with a strategy to see what ‘c’ is doing, since that seems to be the problem, and possibly discover where it's throwing the error. It's easier than explaining the debugger functions.

Sign in to comment.