BPSK调制与解调仿真

该文提供了BPSK调制与解调的MATLAB代码实现,包括BPSK.m(调制)、deBPSK.m(解调)以及Communication_BPSK.m(通信系统仿真)。在仿真中,对信号添加噪声,分析了加干扰前后及解调后的频谱,并计算了误码率。
摘要由CSDN通过智能技术生成

下面是有关BPSK调制与解调仿真的相关代码部分。

BPSK调制代码:BPSK.m

function [tranMessage] = BPSK(DigitialMessage,f,B)
%这是有关BPSK的调制函数,其中输入参数“DigitialMessage”为扩频序列,
%“f”为载波调制频率,“B”为符号波特率,输出"tranMessage"为已调制信号。


    ts = 0.000001;       %抽样时间间隔;
    T = 1/B;            %符号周期;
    t = ts:ts:1;         %生成时间向量;
    fc = f;             %载波频率;
    tranMessage = [];                            %创建调制信号向量;
    N = round(T/ts);                             %一个码元符号对应的载波抽样点数;

    for n = 1:length(DigitialMessage)            %创建计数变量n并进行BPSK调制;
        if DigitialMessage(n) == 0
            carrier = cos(2*pi*fc*t(((n-1)*(N) + 1):n * (N))+ pi);       %创建载波,码元“0”对应相位“Π”;
        else
            carrier = cos(2*pi*fc*t(((n-1)*(N) + 1):n * (N)));            %创建载波,码元“1”对应相位“0”;
        end
        tranMessage = [tranMessage carrier];     %输出已调信号;
    end
end

BPSK 解调代码    deBPSK.m

function [Message] = deBPSK(tranMessage, B, f)
%本函数是BPSK的解调函数,其中“tranMessage”为未解调信号,“B”是码元波特率;“f”是载波频率;
%输出是解调后的信号“Message”;


    ts = 0.000001;       %抽样时间间隔;
    T = 1/B;            %符号周期;
    t = ts:ts:1;         %生成时间向量;
    fc = f;             %载波频率;
    carrier = cos(2*pi*fc*t);  %生成解调载波;
    Message = [];              %生成输出信号向量;

    N = round(T/ts);           %一个码元符号对应的载波抽样点数;
    


    tranMessage = tranMessage .* carrier;      %进行解调;


    for i = 1:N:length(tranMessage)     %抽样判决,信号大于0量化为1,小于0量化为0;
        if(tranMessage(i) > 0)
            c = 1;
        else
            c = 0;
        end
        Message = [Message, c];                %输出信号;
    end

end

BPSK 通信系统仿真代码   Communication_BPSK.m

function [SER, outmessage] = Communication_BPSK(message, SNR, T, fc)
%本函数为BPSK不扩频的函数,其中输入“message”为信号码元,“SNR”为信噪比;
%“T”为码元周期,“fc”为载波频率, ;

    P_Noise = 10^((-1)*SNR/10);     %噪声功率;
    

    tranmessage = BPSK(message, fc, 1/T);
    
    
    Noise = sqrt(P_Noise) * randn(1, length(tranmessage));  %添加噪声;
    
    
    tranmessage_f = fft(tranmessage);
    
    figure(10);
    plot(abs(tranmessage_f));
    title("未加干扰信号后BPSK的不扩频信号频谱图");
    xlabel("频率/Hz");
    ylabel("频谱幅度");
    
    
    tranmessage = tranmessage + Noise;
    
    
    tranmessage_f = fft(tranmessage);
    figure(11);
    plot(abs(tranmessage_f));
    title("加干扰信号后BPSK的不扩频信号频谱图");
    xlabel("频率/Hz");
    ylabel("频谱幅度");
    
    
    outmessage = deBPSK(tranmessage, 1/T, fc);
    tranmessage_f = fft(outmessage);
   
    
    figure(12);
    plot(abs(tranmessage_f));
    title("加干扰信号解调后BPSK的不扩频信号频谱图");
    xlabel("频率/Hz");
    ylabel("频谱幅度");
    
    
    

count = 0;
for i = 1:length(message)             %计算误码率;
        if message(i) == outmessage(i)
            count = count + 1;
        end
    end
    str = "%";
    SER = 100 - count/length(message) * 100;
    fprintf("误码率等于 %f",SER);
    fprintf("%s\n", str);
end

主函数代码

message = randi([0 1],1,2000);   %随机生成信息码元;
SNR = 15;                         %信噪比;
T = 1/length(message);           %波特率;
fc = 200000;                     %载波频率;
temp = Communication_BPSK(message, SNR, T, fc); %模拟BPSK通信系统;

最后仿真信号频谱结果图如下(载波频率为200000Hz):

 

 

 误码率结果(用2000个码元实验)

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,我来回答您的问题。 BPSK是一种二进制相移键控调制技术,用于数字通信中。Simulink是一款MATLAB的图形化建模工具,用于建立系统级仿真模型。 要进行BPSK调制解调的Simulink仿真,可以按照以下步骤进行: 1. 建立模型:打开Simulink,从库浏览器中选择基本模块,将输入信号、BPSK调制器、信道、BPSK解调器和误率计算器等模块拖入模型中,并连接它们的输入和输出。 2. 配置参数:设置每个模块的参数,例如输入信号的幅度、频率和相位,BPSK调制器的载波频率和符号速率,信道的信噪比等。 3. 运行模拟:按下Simulink模型中的“运行”按钮,进行模拟运行。 4. 分析结果:查看BPSK调制后的波形、信噪比和误率等结果,并根据需要调整模型参数,重新运行模拟,直到满足设计要求。 希望这些步骤可以帮助您进行BPSK调制解调的Simulink仿真。如果您有其他问题,请随时向我提问。 ### 回答2: BPSK是一种数字调制技术,它使用一个二进制数字信号来调节一个载波波形。通过改变载波波形的相位,BPSK可以表示数字信号的不同数值。 在Simulink中,我们可以使用BPSK调制模块进行BPSK调制,以及使用BPSK解调器模块进行解调BPSK调制模块包含三个输入端口:消息信号、载波频率和信噪比。消息信号可以是数字信号或数值型信号,载波频率需要根据通信系统的需求进行设置,信噪比与信道的质量有关。 BPSK解调器模块则包含两个输入端口:接收信号和载波频率。接收信号需要经过滤波器和放大器处理,载波频率也需要与发送端设置一致。解调器输出的是消息信号。 在Simulink中进行BPSK调制解调仿真时,我们需要自己设计一套测试用的通信系统,包括消息信号生成、BPSK调制、信道仿真BPSK解调和误率统计等模块。在这个过程中,需要注意设置各个模块的参数和信号类型,并监视仿真结果是否符合预期。 总之,采用Simulink进行BPSK调制解调仿真相对简单而又实用,可以用于通信系统的设计和优化中,提高系统的性能和可靠性。 ### 回答3: BPSK调制解调(Binary Phase Shift Keying)是一种基础的数字通信调制技术,它将数字信号转换成一个带有相位信息的正弦波信号,并将这个信号传输到信道中,最后在接收端进行解调还原成原始的数字信号。在Simulink仿真平台中进行BPSK调制解调仿真可以帮助我们更好的理解这种调制解调技术的工作原理。 首先,我们需要构建一个BPSK调制模块,它主要是将数字信号转换成带有相位信息的正弦波信号,并将信号传输到信道中。我们可以使用Simulink中的信号源模块来产生数字信号,然后通过BPSK调制器对数字信号进行调制,输出一个相位为0或π的正弦波信号。 其次,我们需要将BPSK调制器的输出信号传输到信道中,并模拟信道中的噪声干扰。在Simulink中,我们可以使用加性高斯白噪声模块来模拟信道中的噪声干扰,这样可以更真实地再现实际通信环境下的情况。 最后,我们需要构建一个BPSK解调模块,它主要是将接收端收到的带有相位信息的正弦波信号进行解析,还原成原始的数字信号。在Simulink中,我们可以使用BPSK解调器对接收到的信号进行解调,得到原始的数字信号。 通过构建BPSK调制解调Simulink仿真,我们可以更好地理解BPSK调制解调技术的工作原理,并且可以通过改变模拟参数,比如信噪比等,来观察在不同环境下BPSK调制解调系统的性能表现。此外,当我们需要在实际应用中使用BPSK调制解调技术时,仿真模拟也可以帮助我们选择合适的参数和优化系统性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值