pac
pac

Reputation: 291

Converting Single dimensional matrix to two dimension in Matlab

Well I do not know if I used the exact term. I tried to find an answer on the net. Here is what i need: I have a matix

                              a = 1  4  7 

                                  2  5  8

                                  3  6  9

If I do a(4) the value is 4. So it is reading first column top to buttom then continuing to next .... I don't know why. However,

What I need is to call it using two indices. As row and column:

                                  a(1,2)= 4

or even better if i can call it in the following way:

                                  a{1}(2)=4

What is this process really called (want to learn) and how to perform in matlab. I thought of a loop. Is there a built in function Thanks a lot

Check this: a =

18    18    16    18    18    18    16     0     0     0
16    16    18     0    18    16     0    18    18    16
18     0    18    18     0    16     0     0     0    18
18     0    18    18    16     0    16     0    18    18

>> a(4)
  ans =
  18

>> a(5)
  ans =
  18

>> a(10)
  ans =
  18

I tried reshape. it is reshaping not converting into 2 indeces

Upvotes: 0

Views: 2630

Answers (3)

Nate
Nate

Reputation: 3038

If you've already got a matrix, you already can access it with two indices:

if you've got

                          a = 1  4  7 

                              2  5  8

                              3  6  9

you can access it as

 a(3,2) = 6

However, the indexing goes from the top left, row first then column. If you want to get at the "4" in the matrix then do:

a(1,2)

Upvotes: 1

Tony Hopkinson
Tony Hopkinson

Reputation: 20320

Or you could leave it as a one dimensional array and just use

((Column - 1) * 3) + Row - 1) as the index. 3 because there are three columns.

NB a(4) = 4 because of the way you've arranged columns and rows in the one dimensional array, yours is "loaded" as

R1C1,R2C1,R3C1, R1C2 etc wher R is row and C is column If that's inconvenient then you just need to get whatever fills the array row then column so the above mapping would be

((Row - 1) * 3) + Column - 1)

Don't do Matlab so above code assumes array starts at 0, if not just add 1 to it.

Upvotes: 0

Oliver Charlesworth
Oliver Charlesworth

Reputation: 272557

To reshape a vector/matrix/array, use reshape().

Upvotes: 1

Related Questions