Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Matlab - wyznaczenie widma sygnalu fm

12 Lis 2013 14:04 2580 1
  • Poziom 13  
    Mam wygenerowany przebieg modulacji FM i potrzebuję wyznaczyć jego widmo. Jak to poprawnie zrobić?

    Code:

    clear all
    close all

    Fc = 10; %syg nosnej
    fs = 1; %f syg modulujacy

    t = 0:0.0001:3; %okres probkwoania
    beta=5; %indeks modulacji
    Fp = 4*(Fc); %czestotliwosc probkowania
    y = sin(2*pi*Fc*t);
    subplot(4,1,1)
    plot (t, y,'k');
    title('Sygnal nosnej');

    m=sin(2*pi*fs*t);
    hold on
    subplot(4,1,2)
    plot(t,m,'k')
    title('Sygnal modulujacy');


    subplot(4,1,3)
    x=sin(2*pi*Fc*t + beta*(sin( 2*pi*fs*t)));
    hold on
    plot(t,x,'k');
    title('Sygnal FM');

    widmo=abs(fft(x));
    %widmo=widmo/500;
    subplot(4,1,4);


    widmo=abs(fft(y));
    widmo=widmo/500;
    subplot(2,2,4);
    stem(fplot(1:length(fplot)/10), widmo(1:length(fplot)/10));
    xlabel('czas');
    ylabel('Amplituda');
    title('widmo');
    grid on;


  • Poziom 19  
    Cytat:
    stem(fplot(1:length(fplot)/10), widmo(1:length(fplot)/10));


    Cokolwiek autor ma na myśli to działająca wersja będzie taka:
    stem(t, widmo);
    Tylko, że zamiast t należy stworzyć macierz częstotliwości.

    Niech help będzie Twoim przyjacielem:
    http://www.mathworks.com/help/matlab/ref/fft.html

    Code:
    NFFT = 2^nextpow2(L); % Next power of 2 from length of y
    
    Y = fft(y,NFFT)/L;
    f = Fs/2*linspace(0,1,NFFT/2+1);

    % Plot single-sided amplitude spectrum.
    plot(f,2*abs(Y(1:NFFT/2+1)))
    title('Single-Sided Amplitude Spectrum of y(t)')
    xlabel('Frequency (Hz)')
    ylabel('|Y(f)|')