Чтобы найти фазу FM-сигнала в Matlab

Я хочу найти фазу FM-сигнала. Код Matlab сигнала сообщения

m= ones(1,Fs); 
m= [m(1:round(.4*Fs))*1, m(round(.4*Fs)+1:round(.7*Fs))*-2 ...
    m(round(.7*Fs)+1:Fs)*0];

Как найти фазу FM-сигнала?


person user2979746    schedule 11.11.2013    source источник
comment
Это очевидно, если вы понимаете, что такое FM. Что вы пробовали? Кстати, вам нужно определить индекс модуляции   -  person Luis Mendo    schedule 11.11.2013
comment
функция ELE361_Proje2(Kf,Fc,Fs) Kf=50; Fc=400; Фс=100; t=linspace(0,1,Fs); m= единицы(1,Fs); m = [m(1:округление(.4*Fs))*1 m(округление(.4*Fs)+1:округление(.7*Fs))*-2 m(округление(.7*Fs)+ 1:Fs)*0];%сигнал сообщения fi_t =2*piKftrapz(m,t);%фаза u=10*cos(2*piFc t+fi_t);%модулированный сигнал (t,m);   -  person user2979746    schedule 11.11.2013
comment
Я попытался интегрировать метод trapz, но получил этот график (модулированный сигнал: prntscr.com/23h6d2   -  person user2979746    schedule 11.11.2013
comment
Смотрите мой ответ. В следующий раз вы должны обновить свой квест, чтобы включить код, потому что в комментарии он не может быть правильно отформатирован.   -  person Luis Mendo    schedule 12.11.2013


Ответы (1)


Вам нужны следующие исправления в вашем коде:

Kf=50; %%% increase Kf no notice effect
Fc=400;
Fs=5000; %%% Increase Fs. Nyquist criterion!
t=linspace(0,1,Fs);
m= ones(1,Fs);
m= [m(1:round(.4*Fs))*1 m(round(.4*Fs)+1:round(.7*Fs))*-2 m(round(.7*Fs)+1:Fs)*0];
fi_t =2*pi*Kf*cumtrapz(t,m);%%% use cumtrapz, not cum. Reverse order
u=10*cos(2*pi*Fc*t+fi_t);
plot(t,u); 
person Luis Mendo    schedule 11.11.2013