找回密码
 注册
关于网站域名变更的通知
查看: 479|回复: 1
打印 上一主题 下一主题

Matlab之DPSK

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-24 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 haidaowang 于 2020-7-24 11:16 编辑 , Q7 I* P( ?: A7 T
) T9 p5 I  q$ [3 T, u$ R% h& C
Matlab之DPSK
- v# l, w8 D: Q2 a1 I- R2 x# c( |) [

  {# h/ r2 q% p$ M
  • % communication DPSK demodulation
  • % name:Chen Yu
  • % student ID:12353032
  • function Lab9
  • %
  • % 参数设置
  • %
  • Ts=1/100;                    %码元周期
  • Rs=1/Ts;                     %码元频率
  • n1=10;                       %载波频率系数
  • fc=Rs*n1;                    %载波频率
  • n2=64;                       %采样频率系数
  • fs=fc*n2;                    %采样频率,N_sample = 640
  • N_sample=fs*Ts;              %每个码元的抽样点数=n1*n2,经测试小于128时,效果较差
  • dt=Ts/N_sample;              %抽样时间间隔
  • N=10;                        %码元数
  • t=0:dt: ((N+1)*N_sample-1)*dt;%传输序列持续时间,考虑了参考电平0
  • %
  • %基本码元g(t)=1,还有高斯白噪声
  • %
  • gt=cos(2*pi*fc*t(1:N_sample)+pi);  %相位pi对应码元1
  • %噪声,均值=0,标准差=0.01
  • noise=normrnd(0,0.1,1,length(t));
  • s=zeros(1,(N+1)*N_sample);%采样点
  • absolute_code    = randi([0,1],1,N);        %生成绝对码
  • relative_code    = zeros(1,N+1);
  • relative_code(1) = 0;                       %参考码元为0,为第一个码元
  • for  k = 2:N+1
  •     relative_code(k) = xor(absolute_code(k-1),relative_code(k-1));%生成相对码
  • end
  • %生成调制信号
  • s(1:N_sample) = -1*gt;
  • for i = 2:N+1
  •     if relative_code(i) == 1                         %得到波形图
  •         s((i-1)*N_sample+1:i*N_sample) = gt;         %码元为1
  •     else
  •         s((i-1)*N_sample+1:i*N_sample) = -1*gt;      %码元为0
  •     end
  • end
  • figure(1);
  • plot(t,s);
  • title('调制信号前两个码元');
  • axis([0,0.02,-1.5,1.5]);
  • grid on
  • %加入高斯白噪声
  • st = s + noise;
  • figure(2);
  • plot(t,st);
  • title('加入高斯白噪声后,调制信号前两个码元');
  • axis([0,0.02,-1.5,1.5]);
  • grid on
  • %带通滤波,去除AWGN
  • w1       = 2*(fc-Rs)/fs;           %下截止频率
  • w2       = 2*(fc+Rs)/fs;           %上截止频率
  • numerator= fir1(60,[w1,w2]);       %FIR滤波器,numerator是FIR滤波器的系数
  • sfBandpass=filter(numerator,1,st); %st为时间信号
  • figure(3);
  • plot(t,sfBandpass);
  • title('通过带通滤波器后,调制信号前两个码元');
  • axis([0,0.02,-1.5,1.5]);
  • grid on
  • %进行相干解调
  • sfModulation = sfBandpass.*cos(2*pi*fc*t);
  • figure(4);
  • plot(t,sfModulation);
  • title('通过解调后,解调信号前两个码元');
  • axis([0,0.02,-1.5,1.5]);
  • grid on
  • %低通滤波
  • w1       = [];
  • w2       = 2*(Rs)/fs;              %截止频率
  • numerator= fir1(60,[w1,w2]);       %FIR滤波器,numerator是FIR滤波器的系数
  • sfLowpass=filter(numerator,1,sfModulation); %st为时间信号
  • figure(5);
  • plot(t,sfLowpass);
  • title('通过低通滤波器后的调制信号');
  • axis([0,0.1,-1.5,1.5]);
  • grid on
  • %抽样判决,我选取的是中间时刻
  • decide=zeros(1,N+1);
  • for k=1:N+1
  •     if(sfLowpass((k-1)*N_sample+N_sample/2)>0)
  •         decide(k)=1;
  •     else
  •         decide(k)=0;
  •     end
  • end
  • %还原绝对码
  • get_absolute_code = zeros(1,N);
  • for j = 1:N
  •     get_absolute_code(j) = xor(decide(j),decide(j+1));
  • end
  • %画出绝对码前后对比
  • n=1:N;
  • %输出原始码元
  • figure(6);
  • stem(n,absolute_code,'r','LineStyle','none');
  • %输出解调码元
  • hold on
  • stem(n,get_absolute_code,'*','b','LineStyle','none');
  • hleg=legend('原始码元','解调码元');
  • set(hleg,'Location','Northeast');4 I+ F, f, B9 u  n
7 |  G- h" r: _: M) b

0 m0 a' I' v7 J; b
  U. U! Z& f$ t  J" B- w, N2 z% t
+ m2 B- D' ^' v: n! H- ?8 q

4 o$ e7 k, {+ z  T% z; }
# O" v4 j6 H* y; Y5 e( I1 O
  • TA的每日心情
    慵懒
    2020-6-13 15:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-7-24 11:15 | 只看该作者
    Matlab之DPSK
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-24 22:05 , Processed in 0.125000 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表