comm.FMDemodulator

Демодулируйте с использованием FM метода

Описание

The FMDemodulator Система object™ демодулирует FM модулированный сигнал.

Для FM-демодуляции сигнала:

  1. Определите и настройте FMDemodulator объект. См. «Конструкция».

  2. Функции step FM демодулирует сигнал согласно свойствам comm.FMDemodulator. Поведение step характерен для каждого объекта в тулбоксе.

Примечание

Начиная с R2016b, вместо использования step метод для выполнения операции, заданной Системной object™, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

H = comm.FMDemodulator создает демодулятор Системного объекта, H, эта частота демодулирует входной сигнал.

H = comm.FMDemodulator(mod) создает объект FM-демодулятора, свойства которого определяются соответствующим объектом FM-модулятора, mod.

H = comm.FMDemodulator(Name,Value) создает объект FM-демодулятора с каждым заданным свойством Name установить на заданную Value. Name должен находиться внутри одинарных кавычек. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

Свойства

FrequencyDeviation

Пиковое отклонение частоты выхода сигнала (Гц)

Задайте отклонение частоты FM-демодулятора в Гц как положительный действительный скаляр. Значение по умолчанию 75e3. Шумовая полоса системы равна удвоенной сумме отклонения частоты и ширины полосы пропускания сообщения. Это свойство неразрывно.

SampleRate

Частота дискретизации входного сигнала (Гц)

Задайте частоту дискретизации в Гц как положительный действительный скаляр. Значение по умолчанию 240e3. Скорость выхода выборки равна входу скорости выборки. Это свойство неразрывно.

Методы

шагПрименяет демодуляцию полосы частот FM
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

reset

Сброс внутренних состояний Системного объекта

При использовании resetэтот метод сбрасывает оконный суффикс из последнего символа в ранее обработанном системе координат.

Примеры

свернуть все

Модулируйте и демодулируйте синусоидальный сигнал. Постройте график демодулированного сигнала и сравните его с исходным сигналом.

Установите параметры примера.

fs = 100; % Sample rate (Hz)
ts = 1/fs; % Sample period (s)
fd = 25; % Frequency deviation (Hz)

Создайте синусоидальный входной сигнал с длительностью 0,5 с и частотой 4 Гц.

t = (0:ts:0.5-ts)';
x = sin(2*pi*4*t);

Создайте FM-модулятор и демодулятор Системных объектов.

fmmod = comm.FMModulator('SampleRate',fs,'FrequencyDeviation',fd);
fmdemod = comm.FMDemodulator('SampleRate',fs,'FrequencyDeviation',fd);

FM модулирует входной сигнал и строит график его действительной части. Можно увидеть, что частота модулируемого сигнала изменяется с амплитудой входного сигнала.

y = fmmod(x);
plot(t,[x real(y)])

Figure contains an axes. The axes contains 2 objects of type line.

Демодулируйте FM модулированный сигнал.

z = fmdemod(y);

Постройте график входа и демодулированных сигналов. Выходной сигнал демодулятора точно выравнивается с входным сигналом.

plot(t,x,'r',t,z,'ks')
legend('Input Signal','Demod Signal')
xlabel('Time (s)')
ylabel('Amplitude')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Input Signal, Demod Signal.

Создайте FM-демодулятор System object™ из объекта FM-модулятора. Модулируйте и демодулируйте аудиоданные, загруженные из файла, и сравните спектр для демодулированных данных и входных данных.

Установите параметры примера.

fd = 50e3;  % Frequency deviation (Hz)
fs = 300e3; % Sample rate (Hz)

Создайте FM- Системного объекта модулятора.

mod = comm.FMModulator('FrequencyDeviation',fd,'SampleRate',fs);

Создайте объект демодулятора-компаньона при помощи объекта модулятора, чтобы сконфигурировать его.

demod = comm.FMDemodulator(mod);

Проверьте, что свойства идентичны в двух системных объектах.

mod
mod = 
  comm.FMModulator with properties:

            SampleRate: 300000
    FrequencyDeviation: 50000

demod
demod = 
  comm.FMDemodulator with properties:

            SampleRate: 300000
    FrequencyDeviation: 50000

Загрузите аудио данных в структурную переменную, S.

S = load('handel.mat');
data = S.y;
fsamp = S.Fs;

Создайте Системный объект анализатора спектра.

specanalyzer = dsp.SpectrumAnalyzer('SampleRate',fsamp,'ShowLegend',true);

FM модулирует и демодулирует аудио данных.

modData = mod(data);
demodData = demod(modData);

Проверьте, что график спектра входных данных (Канал 1) совмещен с графиком спектра демодулированных данных (Канал 2).

specanalyzer([data demodData])

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. These objects represent Channel 1, Channel 2.

Воспроизведение аудио файла после применения FM-модуляции и демодуляции. Пример использует преимущества характеристик System objects™, чтобы обработать данные в потоковом режиме.

Загрузите аудио файла, guitartune.wav, с использованием объекта audio файла reader.

AUDIO = dsp.AudioFileReader...
    ('guitartune.wav','SamplesPerFrame',4410);

Создайте объект аудио устройства средства записи для воспроизведения звука.

AUDIOPLAYER = audioDeviceWriter;

Создайте объекты модулятора и демодулятора, имеющие свойства по умолчанию.

MOD = comm.FMModulator;
DEMOD = comm.FMDemodulator;

Считывайте аудио данных, FM-модулируйте, FM-демодулируйте и воспроизводите демодулированный сигнал, z.

while ~isDone(AUDIO)
    x = step(AUDIO);                      % Read audio data
    y = step(MOD,x);                      % FM modulate
    z = step(DEMOD,y);                    % FM demodulate
    step(AUDIOPLAYER,z);                  % Playback the demodulated signal
end

Модулируйте и демодулируйте синусоидальный сигнал. Постройте график демодулированного сигнала и сравните его с исходным сигналом.

Установите параметры примера.

fs = 100; % Sample rate (Hz)
ts = 1/fs; % Sample period (s)
fd = 25; % Frequency deviation (Hz)

Создайте синусоидальный входной сигнал с длительностью 0,5 с и частотой 4 Гц.

t = (0:ts:0.5-ts)';
x = sin(2*pi*4*t);

Создайте FM-модулятор и демодулятор Системных объектов.

fmmod = comm.FMModulator('SampleRate',fs,'FrequencyDeviation',fd);
fmdemod = comm.FMDemodulator('SampleRate',fs,'FrequencyDeviation',fd);

FM модулирует входной сигнал и строит график его действительной части. Можно увидеть, что частота модулируемого сигнала изменяется с амплитудой входного сигнала.

y = fmmod(x);
plot(t,[x real(y)])

Figure contains an axes. The axes contains 2 objects of type line.

Демодулируйте FM модулированный сигнал.

z = fmdemod(y);

Постройте график входа и демодулированных сигналов. Выходной сигнал демодулятора точно выравнивается с входным сигналом.

plot(t,x,'r',t,z,'ks')
legend('Input Signal','Demod Signal')
xlabel('Time (s)')
ylabel('Amplitude')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Input Signal, Demod Signal.

Избранная библиография

[1] Chakrabarti, I. H. and Hatai, I. «A New High-Performance Digital FM Modulator and Demodulator for Программно Определяемое Радио and Its FPGA Implementation». International Journal of Reconfigurable Computing. Том 2011, № 10.1155/2011, 2011, стр. 10.

[2] Тауб, Герберт и Дональд Л. Шиллинг. Принципы систем связи. Нью-Йорк: McGraw-Hill, 1971, pp. 142-155.

Алгоритмы

Представление частотно-модулированного сигнала полосы пропускания, Y(t) как

Y(t)=Acos(2πfct+2πfΔ0tx(τ)dτ),

где A - амплитуда несущей, fc - частота несущей, x(τ) - входной сигнал основной полосы частот и - отклонение частоты в Гц. Отклонение частоты является максимальным сдвигом от fc в одном направлении, принимая |<reservedrangesplaceholder0>| ≤ 1.

Сигнал FM основной полосы может быть выведен из представления полосы пропускания путем преобразования его вниз путем fc таким образом, что

ys(t)=Y(t)ej2πfct=A2[ej(2πfct+2πfΔ0tx(τ)dτ)+ej(2πfct+2πfΔ0tx(τ)dτ)]ej2πfct=A2[ej2πfΔ0tx(τ)dτ+ej4πfctj2πfΔ0tx(τ)dτ].

Удаление компонента в -2 fc из ys(t) оставляет представление сгенерированного модулированного сигнала, y(t), которое выражается как

y(t)=A2ej2πfΔ0tx(τ)dτ.

Выражение для y(t) переписывается как

y(t)=A2ejϕ(t),

где ϕ(t)=2πfΔ0tx(τ)dτ, что подразумевает, что входной сигнал является масштабированной версией производной фазы, ϕ(t).

Демодулятор задержки основной полосы используется, чтобы восстановить входной сигнал от y(t).

Задержанная и сопряженная копия принятого сигнала вычитается из самого сигнала,

w(t)=A24ejϕ(t)ejϕ(tT)=A24ej[ϕ(t)ϕ(tT)],

где T - период дискретизации. В дискретных терминах wn = w(nT), и

wn=A24ej[ϕnϕn1],vn=ϕnϕn1.

Сигнал <reservedrangesplaceholder3> - приблизительная производная ϕn, такого что <reservedrangesplaceholder1> ≈ <reservedrangesplaceholder0>.

Расширенные возможности

.
Введенный в R2015a