Sub-scripted Dimension Mismatch Error

3 Ansichten (letzte 30 Tage)
Ibro Tutic
Ibro Tutic am 25 Mai 2016
Kommentiert: Ibro Tutic am 25 Mai 2016
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?

Akzeptierte Antwort

Todd Leonhardt
Todd Leonhardt am 25 Mai 2016
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 Kommentare
Ibro Tutic
Ibro Tutic am 25 Mai 2016
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.
Ibro Tutic
Ibro Tutic am 25 Mai 2016
I fixed the issue by initializing the matrix a by
a = zeroes(11,11)
Which was what you essentially suggested. Thanks.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 25 Mai 2016
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!

Translated by