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信号一般可由一个双极性全占空矩形脉冲序列与一个正弦载波相乘。

在这里插入图片描述

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