Sub-scripted Dimension Mismatch Error

I am trying to create a table, with range breakpoints along the left hand vertical axis (starting at the 2nd row of the matrix a). But I can't seem to figure this error out.
I first create an empty matrix a.
a=[];
Then I try to assign these values, starting at the 2nd row
range = [0 35 70 100 135 170 200 230 260 300]';
by using the following command
a(2:end,1) = range;
Now, shouldn't this assign the values of range, beginning at the second row of a, instead of the first? I get the error
Subscripted assignment dimension mismatch.
Any thoughts?

 Accepted Answer

At the moment you are attempting to assign something to the 1st column row a (starting at the 2nd row), but a is a matrix of double precision floating-point numbers of dimensions 0 x 0. It doesn't have any data in it at all. So you are effectively attempting to assign things to memory which hasn't been allocated yet.
Now, if a already had a matrix where the in the first column was of sufficient size, then you could do this.
I don't know what you are trying to achieve with these "range breakpoints". Maybe you could use nan (not-a-number) values in their place?

2 Comments

I am creating a table, with the above breakpoints along the vertical axis (starting from the 2nd row to the end, in the first column) and I have another set of breakpoints that create the horizontal axis of the table (along the top) starting at the 2nd column, to the end, in the first row.
I fixed the issue by initializing the matrix a by
a = zeroes(11,11)
Which was what you essentially suggested. Thanks.

Sign in to comment.

More Answers (1)

When a is [], end is 0 so 2:end is 2:0 which is empty. You are trying to write non-empty data into an empty range.
You would need
a(2:length(range)+1,1) = range;

Community Treasure Hunt

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

Start Hunting!