Здравствуйте
Я не специалист по matlab и ЦОС но хотелось бы разобраться с частотной модуляцией.
Делаю как тут http://www.dsplib.ru/content/fmdemod/fmdemod.html в matlab
Но результат получаю неожиданный, скорее всего я делаю что-то не так, или чего-то не понимаю.
Скрипты вложил
Подскажите решение проблемы или натолкните на мысль.
Спасибо за внимание
FM демодулятор
FM демодулятор
- Вложения
-
- FM.zip
- Попытка де модулировать FM сигнал
- (1.04 КБ) 1089 скачиваний
- Бахурин Сергей
- Администратор
- Сообщения: 1119
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: FM демодулятор
Вот скрипт который модулирует и демодулирует FM (сделан на основе вашего скрипта)
В результате вижу что демодулированный сигнал повторяет исходный модулирующий.
Будут вопросы - задавайте
Код: Выделить всё
close all; clear all; clc;
Fs = 3200; % Sampling rate of signal
Fc = 500; % Carrier frequency
t = [0:Fs-1]'/Fs; % Sampling times
mod_sig = sin(2*pi*4*t); % Channel 1
dev = 80; % Frequency deviation in modulated signal
%% FM modulator
z = zeros(length(t),1); % complex envelope
int = 0; % integrator
for k = 1:length(t)
% integrator output (see FM modulator scheme)
int = int + mod_sig(k)/Fs;
% FM signal complex envelope calculation for FM signal (see FM modulator scheme)
z(k) = cos(2*pi*dev*int) + 1i*sin(2*pi*dev*int);
end
%RF signal is real part of z.*exp(1i*2*pi*Fc*t)
fm = real(z.*exp(1i*2*pi*Fc*t));
%spectrum
[S frq] = psd(fm, 8192, Fs);
figure; plot(frq, S)
%% FM demodulator
% LPF calculation
[b, a] = cheby2(6, 50, 0.2);
%frequency alignment and complex envelope calculation
i = fm.*cos(2*pi*Fc*t);
q = -fm.*sin(2*pi*Fc*t);
%LPF
A = filter(b,a,i);
B = filter(b,a,q);
%differentiators output
dA = [0; diff(A)*Fs];
dB = [0; diff(B)*Fs];
%demodulator (see FM demodulator scheme)
dem = (dB.*A - dA.*B)./(A.^2+B.^2);
figure; plot(t, mod_sig, t, dem/(2*pi*dev),'r');
legend('mod signal', 'demod signal');
Re: FM демодулятор
Большое спасибо
В своем скрипте, нашел ошибку, в место минус поставил плюс.
А также, разбираюсь с фильтром ФНЧ .
Пока вопросов нет.
Еще раз спасибо.
В своем скрипте, нашел ошибку, в место минус поставил плюс.
А также, разбираюсь с фильтром ФНЧ .
Пока вопросов нет.
Еще раз спасибо.