Преобразование одномерной матрицы в двумерную в Matlab - PullRequest
0 голосов
/ 01 апреля 2012

Ну, я не знаю, использовал ли я точный термин.Я пытался найти ответ в сети.Вот что мне нужно: у меня есть matix

                              a = 1  4  7 

                                  2  5  8

                                  3  6  9

Если я делаю (4), значение равно 4. Так что чтение первого столбца сверху вниз, а затем переход к следующему ....не знаю почему.Тем не менее,

Мне нужно назвать его, используя два индекса.В виде строки и столбца:

                                  a(1,2)= 4

или даже лучше, если я могу назвать это следующим образом:

                                  a{1}(2)=4

Как в действительности называется этот процесс (хотите изучить) и каквыступать в матлаб.Я думал о петле.Есть ли встроенная функция? Большое спасибо

Проверьте это: 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

Я попытался изменить форму.он преобразуется, не превращаясь в 2 инденса

Ответы [ 3 ]

1 голос
/ 01 апреля 2012

Если у вас уже есть матрица, вы уже можете получить к ней доступ с двумя индексами:

если у вас есть

                          a = 1  4  7 

                              2  5  8

                              3  6  9

вы можете получить к нему доступ как

 a(3,2) = 6

Тем не менее, индексирование идет сверху слева, сначала строкой, а затем столбцом. Если вы хотите получить «4» в матрице, тогда выполните:

a(1,2)
1 голос
/ 01 апреля 2012

Чтобы изменить вектор / матрицу / массив, используйте reshape().

0 голосов
/ 01 апреля 2012

Или вы можете оставить его как одномерный массив и просто использовать

((Column - 1) * 3) + Row - 1) в качестве индекса. 3 потому что есть три столбца.

NB a (4) = 4 из-за того, как вы расположили столбцы и строки в одномерном массиве, ваш "загружается" как

R1C1, R2C1, R3C1, R1C2 и т. Д., Где R является строкой, а C является столбцом Если это неудобно, тогда вам просто нужно получить все, что заполняет строку массива, а затем столбец, поэтому приведенное выше отображение будет

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

Не делайте Matlab, поэтому в приведенном выше коде предполагается, что массив начинается с 0, если не просто добавить к нему 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...