Как я могу получить доступ к этому элементу матрицы Matlab? - PullRequest
0 голосов
/ 20 марта 2012

это дескриптор Фурье для набора точек

a =

  -3.4173 - 7.1634i
   7.4589 + 0.1321i
   3.1190 - 2.1870i
  -7.1979 + 0.2863i
   5.9594 + 0.8209i
  -5.4295 -15.7931i
  -1.0957 + 3.7485i
   0.2657 - 4.1459i
   7.4644 - 0.9546i

мне нужно суммировать каждую пару, но когда я использую (1) или (1,1), получается -3,4173 - 7,1634i когда я использую abs (a (1)) или abs (a (1,1)), он также выдает 7,9367, что для меня не имеет смысла!

что мне нужно, так это как получить доступ к каждому элементу любой пары по отдельности, чтобы я получил -3,4173 в одиночку и - 7.1634i в одиночку, чтобы я мог нормализовать его!

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Ваш тип данных выглядит сбивающим с толку, потому что a(1,1) не должен возвращать вам мнимую часть числа ... ваш массив должен быть просто одномерным, если значения являются просто комплексными числами. Но попробуйте использовать функции real() и imag() для элементов вашего массива, которые будут возвращать действительную и мнимую части соответственно. Возможно, вы захотите рассмотреть возможность использования другой структуры данных, поскольку Matlab может нормально обрабатывать обычные комплексные значения, и в этом случае простое использование abs() должно дать модуль числа.

1 голос
/ 20 марта 2012

У вас есть массив комплексных чисел, и вам нужно получить доступ к действительной и мнимой частям каждого числа.

r = real(a);
i = imag(a);

приведет к r и i, содержащим реальные и мнимые части вашего дескриптора соответственно.

Чтобы понять причину, по которой вы получаете ответ, который "не имеет никакого смысла" из abs(a(1)), перейдите по этой ссылке .

...