资源简介

是根据前辈的代码修改的 我要换积分;性噪比为25db,星座图有点问题(完全错误的),误码率要在大的采样率才能实现,瑞利信道没实现

资源截图

代码片段和文件信息

%产生原码
M=10;
t1=linspace(00.001*M60*M);%时间取0-0.01s,共有600个点
A=rand(1M);                %取一行十个数,即a[10]
for i=1:M
    if A(i)>=0.5
        A(i)=1;
    else A(i)=0;            %大于0.5取1小于取0
    end
end
source=A;                   %源码取A的值



for i=1:M
    if source(i)==1
        for j=1:60
            sourcecode(j+60*(i-1))=1;%60个点一格代表一个0/1信号
        end
    else for j=1:60
            sourcecode(j+60*(i-1))=0;%60个点一格代表一个0/1信号
        end 
    end
end                                  %形成输入波形



aftershift=[];                      %创建一个空矩阵
aftershift(1)=1;                    %初始码元为1
for i=1:M                           
    if source(i)==1                 
        if aftershift(i)==1
            aftershift(i+1)=0;     
        else aftershift(i+1)=1;    
        end
    else aftershift(i+1)=aftershift(i); %两码元相同则是0%两码元不相同则是1
    end
end

t=linspace(00.001*(M+1)(M+1)*60);
for i=1:(M+1)
    if aftershift(i)==1
        for j=1:60
            aftershiftcode(j+60*(i-1))=1;
        end
    else for j=1:60
            aftershiftcode(j+60*(i-1))=-1;
        end
    end
end                                      %转换后的码形状 0变-1

t2=linspace(00.00160);
carrier=cos(2000*pi*t2+0.5*pi);%载波
for i=1:(M+1)
    for j=1:60
        encode(j+60*(i-1))=aftershiftcode(j+60*(i-1))*carrier(j);        %加载波后的波形
       nencode(j+60*(i-1))=awgn(aftershiftcode(j+60*(i-1))*carrier(j)25);%加高斯噪声的波形
       
      % h=rayleighchan(0.0010-1-3);
      % nray(j+60*(i-1))=filter(hencode(j+60*(i-1)));
    end
end                                   



for i=1:M*60                    
    D(i)=nencode(i+60);%取600个点编码加载波后波形形
end
for i=1:60*M
   E(i)=nencode(i);
end
for i=1:M  
    F(i)=encode(i*60-45);
end
for i=1:M*60
   decode(i)=D(i)*E(i);%差分相干解调
end

load mypass lowpasser;
LEN=fix(length(lowpasser)/2);
%测出滤波器延时的点数 fix 向零靠拢取整数 length()即lowapsser取点个数
decoded=[];
for i=1:M*60
    decoded(i)=decode(i);
end
for i=(M*60+1):(M*60+LEN)
    decoded(i)=0;
end
afterfilter=filter(lowpasser1decoded);
%lowpasser/1为滤波器系数 
%比如说你的采样频率Fs=1000Hz,
%  选用8阶的滤波器,期望的低通截止频率是200Hz
%[ba]=butter(80.4‘low‘);    %0.4=200/(Fs/2)
%y=filter(bax)               %x是原始数据,y是滤波后的数据;

for i=1:60*M
    if afterfilter(i+LEN)<=0
        recieve(i)=1;
    else recieve(i)=0;
    end
end                                   %接收码


for i=1:M
    recieved(i)=recieve((i-1)*60+30);
end
source
aftershift;
recieved;
t3=linspace(00.001*(60*M+LEN/60)(60*M+LEN));

n=0;
for j=1:M
    for i=1:60
        if recieve(60*j+i-60)~=sourcecode(60*j+i-60)
        n=n+1;
        end
    end
end
rate=n/(60*M);%误码率

figure(1)
plot(t1sourcecode)axis([0 0.001*M -0.2 1.2])title(‘原码‘)xlabel(‘t(sec)‘);
figure(2)
plot(taftershiftcode)axis([0 0.001*(M+1) -1.2 1.2])title(‘码形转换‘)xlabel(‘t(sec)‘);
figure(3)
plot(tnencode)axis([0 0.001*(M+1) -1.2 1.2])title(‘DBPSK‘)xlabel(‘t(sec)‘);
figure(4)
plot(t1decode)axis([0 0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3561  2015-01-06 21:47  DBPSKn.m

     文件        873  2010-01-03 22:52  mypass.mat

----------- ---------  ---------- -----  ----

                 4434                    2


评论

共有 条评论