數字調制(ASK、FSK、PSK)


2ASK(二進制幅移鍵控)又稱OOK

function askdigital(s,f)
% 實現ASK調制
% s——輸入二進制序列;f——載波的頻率,即:一個碼元周期包括f個載波周期
% 調用舉例:askdigital([1 0 1 1 0], 2)
t=0:2*pi/99:2*pi;                                     %初始化定義,1*100的矩陣
cp=[];mod=[];bit=[];

for n=1:length(s);                                   % 調制過程
    if s(n)==0; 
        bit1=zeros(1,100);   % 100是碼元周期
    else  % s(n)==1; 
        bit1=ones(1,100);    
    end
    c=sin(f*t);
    mod=[mod c];    
    bit=[bit  bit1];
end
ask=bit.*mod;
subplot(2,1,1);
plot(bit,'k','LineWidth',1);grid on;        
ylabel('Binary Signal');
axis([0 100*length(s) -2.5 2.5]);
subplot(2,1,2);
plot(ask,'k','LineWidth',1);grid on;
ylabel('ASK modulation');
axis([0 100*length(s) -2.5 2.5]);

  2FSK:‘1’對應頻率為$\omega_1$的載波,‘0’對應頻率為$\omega_2$的載波。

function fskdigital(s,f0,f1)
% 實現 FSK 調制
% s——輸入二進制序列    f0,f1——兩個不同頻率的載波
% 調用舉例 (f0  f1 必須是整數) : fskdigital([1 0 1 1 0],1,2)
t=0:2*pi/99:2*pi;                              %初始化定義
cp=[];mod=[];bit=[];

for n=1:length(s);                            % 調制過程
    if s(n)==0; 
        cp1=ones(1,100);
        c=sin(f0*t);
        bit1=zeros(1,100);
    else %s(n)==1;
        cp1=ones(1,100);
        c=sin(f1*t);
        bit1=ones(1,100);    
    end
    cp=[cp cp1];    
    mod=[mod c];    
    bit=[bit bit1];
end
fsk=cp.*mod;
% fsk = mod;

subplot(2,1,1);                               
plot(bit,'k','LineWidth',1);grid on;
ylabel('Binary Signal');
axis([0 100*length(s) -2.5 2.5]);
subplot(2,1,2);
plot(fsk,'k','LineWidth',1);grid on;
ylabel('FSK modulation');
axis([0 100*length(s) -2.5 2.5]);

  或用Matlab提供的函數fskmod

  • 調用格式

  y= fskmod(x,M,freq_sep,nsamp);

  y=fskmod(x,M,freq_sep,nsamp,Fs);

  • 參數說明

  x:消息信號

  M:表示消息的符號數,必須是2的整數冪,M進制信號(0~M-1)

  freq_sep:兩載波之間的頻率間隔,單位Hz

  nsamp:輸出信號的采樣數,必須是大於1的正整數

  Fs:根據奈奎斯特采樣定理,(M-1)*freq_seq <= Fs

M=2;freqsep=8;nsamp=8;Fs=32;
x=randi([0,M-1],1000,1);
y=fskmod(x,M,freqsep,nsamp,Fs);
ly = length(y);
%畫2FSK的信號頻譜
freq= -Fs/2:Fs/ly : Fs/2-Fs/ly;
Syy = fftshift(abs(fft(y)));
plot(freq,Syy)

  


PSK

function bpskdigital( s, f )
%實現BPSK
%   s:輸入二進制序列,f:載波信號的頻率(一個碼元有幾個載波周期)
%   調用舉例:bpskdigital([1 0 1 1 0], 2)
 t = 0:2*pi/99:2*pi;
 cp = [];
 mod = []; bit = [];
 for n=1:length(s)
     if s(n) == 0
         cp1 = -ones(1,100);
         bit1 = zeros(1,100);
     else %s(n)==1
         cp1 = ones(1,100);
         bit1 = ones(1,100);
     end
     c= sin(f*t);
     cp = [cp,cp1];
     mod = [mod,c];
     bit = [bit,bit1];
 end
 bpsk = cp .* mod;
 subplot(211);
 plot(bit,'LineWidth',1.5);
 grid on;
 ylabel('Binary Signal');
 axis([0 100*length(s) -2.5 2.5]);
 subplot(212);
 plot(bpsk,'LineWidth',1.5);
 grid on;
 ylabel('BPSK modulation');
 axis([0 100*length(s) -2.5 2.5]);

end

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM