使用時將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信號一般可由一個雙極性全佔空矩形脈衝序列與一個正弦載波相乘。