Перейти к содержанию
    

Вычленение огибающей частоты на фоне несущей

Доброго времени суток!

Подскажите: как можно вычлененить 1-ю гармонику несущего сигнала на фоне модулирующего?

Т.е. при разложении сигнала в ряд Фурье, модулированного низкой частотой и выделении из него первой гармоники - у меня получается первая гармоника этого модулирующего сигнала, а мне нужна 1-я гармоника несущего сигнала.

 

Считаю в Матлабе так:

u=fft(U1); - раскладываю в ряд Фурье сигнал U1.

u([1 3:length(u)-1])=0; - обнуляю все элементы кроме второй гармоники.

idi0f=ifft(idi1f); - вывожу его первую гармонику.

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В МатЛабе (в пакете Communications) вроде бы есть специальная функция для этого - называется dmodce.

http://matlab.exponenta.ru/communication/book4/index.php

 

А еще ознакомьтесь с темой этого форума "Демодуляция в цифре".

Возможно, что-то из нее для вас окажется полезным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

модулированного низкой частотой и выделении из него первой гармоники - у меня получается первая гармоника этого модулирующего сигнала, а мне нужна 1-я гармоника несущего сигнала.

 

Насколько я понял, это тема не про демодуляцию.

Уточнитесь со способом модуляции. Для правильно модулированного сигнала в спектре ВООБЩЕ не должно быть НЧ составляющих. Для АМ нужно искать надо не первую гармонику, а максимальную спектральную составляющую.

При ЧМ мне непонятем смысл 1-й гармоники несущего сигнала. Он там весь несущий, и его частота меняется по закону модуляции.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите: как можно вычлененить огибающую частоту на фоне несущей цифровыми методами?

:biggrin: да уж... Гоноровский ворочается в гробу наверное. "Цифровые методы" не изменились со времен открытия радио, это аппаратная часть менялась.

 

Нужно продетектировать как АМ, а потом работать с НЧ - это и есть огибающая. Детектировать АМ "цифровыми способами" просто. Если сигнал комплексный - то sqrt(I*I + Q*Q) для каждого отсчета + ФНЧ с соответствующей частотой среза (мы же по-сути длину комплексного вектора ищем). Если действительный - то abs(S) + ФНЧ.

 

Если нужен "реал-тайм" а ресурсов не хватает - есть аппроксимация для sqrt(I*I + Q*Q).

 

Можно и еще рядом способом - но это простейшие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уточнитесь со способом модуляции...

Сигнал выглядит так:

post-64187-1353653287_thumb.png

У этого сигнала провал посередине. Период сигнала = 0.77 с. Мне нужно вывести на график 1-ю гармонику с тем же периодом 0.77 с.

При этом частот модуляции я не знаю, знаю только частоту несущей.

 

Если сигнал комплексный - то sqrt(I*I + Q*Q) для каждого отсчета + ФНЧ с соответствующей частотой среза

 

Что-то не совсем понятно. Можно чуть подробнее.

Что-то вроде этого надо записать?

z = ddemod(Idi, Fc, Fd, Fs, 'qask/arb', M, opt1, opt2, opt3, opt4);

Но тут я не знаю откуда взять параметры: Fd, Fs, M, opt1, opt2...

И как мне затем отсюда выразить 1-ю гармонику?

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сигнал выглядит так:

...

Знаю я только частоту несущей.

...

Что-то не совсем понятно.

Да уж... Действительно непонятно. И непонятен сам закон модуляции - а как тогда можно что-то реконструировать? Что это у Вас на картинке? Огибающая? Или сам сигнал? И что тогда значит "несущая"? Первая гармоника?

 

Можно чуть подробнее.

... не имеет смысла. Я думал у Вас нечто вроде радиоимпульса. А во вских

ddemod()

я не разбираюсь.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да уж... Действительно непонятно. И непонятен сам закон модуляции - а как тогда можно что-то реконструировать? Что это у Вас на картинке? Огибающая? Или сам сигнал? И что тогда значит "несущая"? Первая гармоника?

Это сам сигнал. Несущая - имею ввиду частоту с которой следуют эти импульсы с провалом посередине (т.е. на графике период равен 0.77 с). Мне надо отфильтровать все высшие гармоники и низкочастотную составляющую модулирующего сигнала, оставить только 1-ю гармонику несущего сигнала (а не 1-ю гармонику модулирующего сигнала).

Если обнулить все высшие гармоники, кроме второй:

idi([1 3:length(idi)-1])=0;

то у меня будет 1-я гармоника НЧ модулирующего сигнала:

post-64187-1353659003_thumb.png

А как раз ее мне и надо убрать.

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это сам сигнал. Несущая - имею ввиду частоту с которой следуют эти импульсы с провалом посередине (т.е. на графике период равен 0.77 с).
...это тактовая - частота первой гармоники.

 

Мне надо отфильтровать все высшие гармоники и низкочастотную составляющую модулирующего сигнала, оставить только 1-ю гармонику несущего сигнала (а не 1-ю гармонику модулирующего сигнала).

...ну так за чем дело стало?

 

Если обнулить все высшие гармоники, кроме второй:

idi([1 3:length(idi)-1])=0;

то у меня будет 1-я гармоника НЧ модулирующего сигнала:

А как раз ее мне и надо убрать.

...ну так выделите 1-ую. или в вашей нумерации это уже постоянная составляющая? Так значит Вы уже выделили ту, что нужно. А колеблется она потому как это никакая не АМ, а обычный спектр сигнала и это самая обычная его первая гармоника - в разные периоды доля энергии сигнала на нее выпадает разная оттуда и колебания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...ну так выделите 1-ую. или в вашей нумерации это уже постоянная составляющая? Так значит Вы уже выделили ту, что нужно. А колеблется она потому как это никакая не АМ, а обычный спектр сигнала и это самая обычная его первая гармоника - в разные периоды доля энергии сигнала на нее выпадает разная оттуда и колебания.

 

Значит мне не она нужна. Мне нужна 1-я гармоника (имею ввиду обычную синусоиду, без высших гармоник) у которой должен быть период тот же, что и у несущей - 0.77 с.

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит мне не она нужна. Мне нужна 1-я гармоника (имею ввиду обычную синусоиду, без высших гармоник) у которой должен быть период тот же, что и у несущей - 0.77 с.

Я понял. Тем графиком(последним) Вы отрисовали гармонику(период показали) а я думал изменение этой гармоники от фрейма к фрейму. Ясно... Но... я так и не понял Ваших затруднений. Я не знаю синтаксис матлаба. Но в чем затруднение то? Сделайте FFT. Пройдитесь пороговой функцией(этож полноценный скриптовый язык) и выделите гармонику с номером 1 превышающую определенный порог.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пройдитесь пороговой функцией(этож полноценный скриптовый язык) и выделите гармонику с номером 1 превышающую определенный порог.

А что это за пороговая функция? Т.е. под порогом Вы имеете ввиду количество низкочастотных гармоник, которые надо отбросить для того, чтобы оставить нужную мне? И как это сделать в матлабе, в ручную подбирать по внешнему виду?

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что это за пороговая функция? Т.е. под порогом Вы имеете ввиду количество низкочастотных гармоник, которые надо отбросить для того, чтобы оставить нужную мне? И как это сделать в матлабе, в ручную подбирать по внешнему виду?

Приведите график спектра всего своего сигнала включая постоянную составляющую...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приведите график спектра всего своего сигнала включая постоянную составляющую...

Привожу:

post-64187-1353926111_thumb.png

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто нибудь считал огибающую по Гильберту?

 

Например нужно продетектировать АМ-сигнал

пробовал на делфи написал процедуру нахождения комплексно сопряженного сигнала. Огибающая - корень квадратный из сигнала и его огибающей. Результат отрицательный:(

 

procedure Hilbert(var a : Array of Single);

var

b: array[0..bitlim] of single;

theta,t:integer;

begin

 

for t:=0 to maxpoint do

begin

for theta:=0 to maxpoint do

if not(t-theta)=0 then b[t]:=(a[theta]/(t-theta));

b[t]:=b[t]/Pi

end;

 

for t:=0 to maxpoint do

a[t]:=b[t];

 

end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гильберт позволяет получить комплексный аналитический сигнал из вещественного, строится как обычный КИХ фильтр. Чтобы получить НЧ огибающую Вашего сигнала, необходимо снести сигнал с несущей в 0, далее sqrt(I*I + Q*Q) для каждого отсчета + ФНЧ с соответствующей частотой среза, т.е. все так как писал выше DRUID3.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...