matlab2ask和2psk仿真實驗代碼

使用時將F2T.m和T2F.m文件放在和主函數相同的文件目錄下即可。

F2T.m文件

function[t,st]=F2T(f,sf)
df=f(2)-f(1);
Fmx=(f(end)-f(1)+df);
dt=1/Fmx;
N=length(sf);
T=dt*N;
t=0:dt:T-dt;
sff=fftshift(sf);
st=Fmx*ifft(sff);

T2F.m文件

function[f,sf]=T2F(t,st)
dt=t(2)-t(1);
T=t(end);
df=1/T;
N=length(st);
f=-N/2*df:df:N/2*df-df;
sf=fft(st);
sf=T/N*fftshift(sf);

2ASK仿真
主函數

clear all
close all
i=5;%五個點
%採樣頻率 
c=100;
j=i*c;%5000個點,步長
t=linspace(0,i,j);
fc=3;%載波頻率,這裏可以判斷一個碼元週期裏面正弦波的個數,
fm=fc;

x=(rand(1,i));
a=round(x);%四捨五入
st=t;
for n=1:i
    if a(n)<1
        for m=j/i*(n-1)+1:j/i*n
            st(m)=0;
        end
    else
        for m=j/i*(n-1)+1:j/i*n
            st(m)=1;
        end 
    end
end

figure(1);
subplot(221);
plot(t,st);%原方波信號
axis([0,i,-0.2,1.2]);
title('基帶信號');



s1=cos(2*pi*fc*t);%載波s1
subplot(222);
plot(t,s1);
axis([0,i,-1,1]);
title('載波信號');


e_2ask=st.*s1;%調幅信號
subplot(223);
plot(t,e_2ask);
axis([0,i,-1,1]);
title('已調信號');


at=e_2ask.*cos(2*pi*fc*t);%相干解調
at=at-mean(at);%減去直流成分之後的解調信號
%subplot(223);
[f,af]=T2F(t,at);%信號變成頻域
[t,at]=lpf(f,af,2*fm);%通過低通濾波器的輸出

%抽樣判決

for m=0:i-1
    if at(1,m*c+c/2)<0
        for j=m*c+1:(m+1)*c
            at(1,j)=0;
        end
    else
        for j=m*c+1:(m+1)*c
            at(1,j)=1;
        end
    end
end
subplot(224);
plot(t,at);
axis([0,5,-0.2,1.2]);
title('相干解調後的波形')
figure(2)
plot(f,abs(af));

結果
在這裏插入圖片描述

下面是2PSK仿真代碼

clear all
close all
i=5;%五個點
%採樣頻率 
c=100;
j=i*c;%5000個點,步長
t=linspace(0,i,j);
fc=2;%載波頻率,這裏可以判斷一個碼元週期裏面正弦波的個數,
fm=fc;

x=(rand(1,i));
a=round(x);%四捨五入
st=t;
for n=1:i
    if a(n)<1
        for m=j/i*(n-1)+1:j/i*n
            st(m)=-1;
        end
    else
        for m=j/i*(n-1)+1:j/i*n
            st(m)=1;
        end 
    end
end

figure(1);
subplot(221);
plot(t,st);%原方波信號
axis([0,i,-1.2,1.2]);
title('基帶信號');



s1=cos(2*pi*fc*t);%載波s1
subplot(222);
plot(t,s1);
axis([0,i,-1,1]);
title('載波信號');


e_2psk=st.*s1;%調製信號
subplot(223);
plot(t,e_2psk);
axis([0,i,-1,1]);
title('已調信號');


at=e_2psk.*cos(2*pi*fc*t);%相干解調
at=at-mean(at);%減去直流成分之後的解調信號
%subplot(223);
[f,af]=T2F(t,at);%信號變成頻域
[t,at]=lpf(f,af,2*fm);%通過低通濾波器的輸出

%抽樣判決

for m=0:i-1
    if at(1,m*c+c/2)<0
        for j=m*c+1:(m+1)*c
            at(1,j)=-1;
        end
    else
        for j=m*c+1:(m+1)*c
            at(1,j)=1;
        end
    end
end
subplot(224);
plot(t,at);
axis([0,i,-1.2,1.2]);
title('相干解調後的波形')
figure(2)
plot(f,abs(af));%畫出af的頻譜
title(sprintf("採樣頻率是%d時的解調信號的頻譜",c));


2psk仿真結果
原理

二進制相移鍵控(2PSK)是利用載波的相位變化來傳遞數字信息,而振幅和頻率保持不變。
2PSK信號一般可由一個雙極性全佔空矩形脈衝序列與一個正弦載波相乘。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章