【数字信号调制】基于matlab二进制数字相位调制(2PSK)【含Matlab源码 1000期】

举报
海神之光 发表于 2022/05/29 03:36:24 2022/05/29
2.7k+ 0 0
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源: 【数字信号调制】基于matlab二进制数字相位调制(2PSK)【含Matlab源码 1000期】 获取代码方式2: 通过订阅紫极神光博客付...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源: 【数字信号调制】基于matlab二进制数字相位调制(2PSK)【含Matlab源码 1000期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、PSK简介

相移键控法, 根据数字基带信号的两个电平使载波相位在两个不同的数值之间切换的一种相位调制方法。
产生PSK信号的两种方法:
1)、调相法:将基带数字信号(双极性)与载波信号直接相乘的方法:
2)、选择法:用数字基带信号去对相位相差180度的两个载波进行选择。
两个载波相位通常相差180度,此时称为反向键控(PSK)。
解调方法:只能采用相干解调。
类型:二进制相移键控(2PSK),多进制相移键控(MPSK)。

三、部分源代码

clear all
close all
i=10;
j=5000;
fc=4;%载波频率
fm=i/5;%码元速率
B=2*fm;
t=linspace(0,5,j);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号
a=round(rand(1,i));%随机序列,基带信号
st1=t;
for n=1:10
    if a(n)<1;
        for m=j/i*(n-1)+1:j/i*n
            st1(m)=0;
        end
    else
        for m=j/i*(n-1)+1:j/i*n
            st1(m)=1;
        end
    end
end
figure(1);
subplot(511);
plot(t,st1);
title('基带信号');
axis([0,5,-1,2]);
%%%%%%%%%%%&&&&&&%%%%%%%%%%%%%%%%%产生双极性基带信号
st2=t;               
for k=1:j;
    if st1(k)>=1;
        st2(k)=0;
    else
        st2(k)=1;
    end
end;
st3=st1-st2;%双极性基带信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波信号
s1=sin(2*pi*fc*t);
subplot(512);
plot(s1);
title('载波信号');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%调制
psk=st3.*s1;
subplot(513);
plot(t,psk);
title('2PSK信号');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调
psk=psk.*s1;%与载波相乘
[f,af] = T2F(t,psk);%%%%%%%%%%%通过低通滤波器
[t,psk] = lpf(f,af,B);
subplot(514);
plot(t,psk);
title('低通滤波后波形');
%脚本文件F2T.m定义了函数F2T,计算信号的反傅立叶变换。
function [t,st]=F2T(f,sf)
%This function calculate the time signal using ifft function for the input
%signal's spectrum
 df = f(2)-f(1);
Fmx = ( f(end)-f(1) +df);
dt = 1/Fmx;
N = length(sf);
T = dt*N;
%t=-T/2:dt:T/2-dt;
t = 0:dt:T-dt;
sff = fftshift(sf);
st = Fmx*ifft(sff);
function [t,st]=lpf(f,sf,B)
%This function filter an input data using a lowpass filter
%Inputs: f:  frequency samples
% sf: input data spectrum samples
% B:  lowpass's bandwidth with a rectangle lowpass
%Outputs:  t: time samples
% st: output data's time samples
df = f(2)-f(1);
T = 1/df;
hf = zeros(1,length(f));%全零矩阵
bf = [-floor( B/df ): floor( B/df )] + floor( length(f)/2 );
hf(bf)=1;
yf=hf.*sf;
[t,st]=F2T(f,yf);
st = real(st);

  
 

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/117903130

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。