• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: Matlab
  • 标签: ASK  FSK  PSK  MATLAB  

资源简介

MATLAB仿真ASK,FSK,PSK,并对比三种方式的误码率在信噪比0-20时的情况,注释全面

资源截图

代码片段和文件信息

clear;
clc;
close all;

n=10000;                          %10000个信息位          
b=randint(1n);
f1=1;f2=2;
t=0:1/30:1-1/30;                  %30数据点每秒                  

%ASK
sa1=sin(2*pi*f1*t);
E1=sum(sa1.^2);
sa1=sa1/sqrt(E1);
sa0=0*sin(2*pi*f1*t);                  %产生ASK单位波形,当信息位1时有正弦波形,0时没有,

%FSK
sf0=sin(2*pi*f1*t);                  %产生FSK单位波形
E1=sum(sf0.^2);
sf0=sf0/sqrt(E1);
sf1=sin(2*pi*f2*t);
E2=sum(sf1.^2);
sf1=sf1/sqrt(E2);

%PSK
sp0=sf0;                  %PSK单位波形
sp1=-sf0;

%modulization
ask=[];fsk=[];psk=[];
for i=1:n
    if(b(i)==1)
        ask=[ask sa1];      %产生askfskpsk波形,根据信息位补充单位波形
        fsk=[fsk sf1];
        psk=[psk sp1];
    else
        ask=[ask sa0];
        fsk=[fsk sf0];
        psk=[psk sp0];
    end
end
figure(1)
subplot(411)
stairs(0:10[b(1:10) b(10)]‘linewidth‘1.5)
axis([0 10 -0.5 0.5]);
grid on;

subplot(412)
tb=0:1/30:10-1/30;
plot(tbask(1:10*30)‘b‘‘linewidth‘1.5)
grid on;

subplot(413)
plot(tbfsk(1:10*30)‘r‘‘linewidth‘1.5)
grid on;

subplot(414)
plot(tbpsk(1:10*30)‘k‘‘linewidth‘1.5)                     %画出产生的波形前10个信息位
grid on;

for snr=0:20
    A=[];F=[];P=[];                  %三个解调后数组,初始化均为0
    %awgn
    askn=awgn(asksnr);
    fskn=awgn(fsksnr);
    pskn=awgn(psksnr);
    for i=1:n
        if sum(sa1.*askn(1+30*(i-1):30*i))>0.5 %ASK detection
            A=[A 1];
        else
            A=[A 0];

评论

共有 条评论