为不同的调制方案设计一个单载波系统(映射器-信道-去映射器)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本代码为不同的调制方案(BPSK-QPSK(Gray-coded&binary coded)-8PSK-16QAM-BFSK)设计了一个单载波系统(映射器-信道-去映射器),并计算实际BER和理论BER并比较结果。

📚2 运行结果

 

 

 

主函数部分代码:

clear all
clc

%%%%%%%%%%%%%%%%% generating bits %%%%%%%%%%%%%%%%%%%
stream_of_bits = 100000 ;
Random_bits = randi([0 1] , 1 , stream_of_bits) ;
%---------------------- 1)BPSK -------------------------- 
%%%%%%%%%%%%%%% Mapper %%%%%%%%%%%%%%%%%%%
mapped_symbols = Random_bits .*2 - 1 ; %mapping bits to 1 and -1
%%%%%%%%%%%%%%%%% AWGN channel %%%%%%%%%%%%%%%
BER_BPSK = [] ;
theoritical_BER_BPSK = [] ;
snr = [-2 : 5] ; %range of snr in dB
Eb=1; %bit Energy
No = Eb./(10.^(snr/10));
for i = 1 : length(snr)
AWGN = randn(1,stream_of_bits)*sqrt(No(i)/2); %generating gaussian noise of mean zero and variance 1 
recieved_signal = mapped_symbols + AWGN ; %Y=X+N
%%%%%%%%%%% Demapper %%%%%%%%%%%%%%%%%%%%%%
demapped_signal = [] ;
for k = 1 : stream_of_bits
if recieved_signal(k) >= 0 %zero is the threshold (-1+1)/2
demapped_signal = [demapped_signal 1] ;
else
demapped_signal = [demapped_signal 0] ;
end
end
%%%%%%%%%%% BER calculation %%%%%%%%%%%%%%%%%%%%
error = abs(demapped_signal - Random_bits);
BER_BPSK = [BER_BPSK sum(error)/stream_of_bits] ;
theoritical_BER_BPSK = [theoritical_BER_BPSK 0.5*erfc(sqrt(1/No(i)))];
end
%%%%%%%%%%%%% plotting %%%%%%%%%%%%%%%%%%%
figure(1)
semilogy(snr,BER_BPSK , '-o','linewidth',2 ) ;
hold on
semilogy( snr , theoritical_BER_BPSK ,'-p','linewidth',2) ;
xlabel('Eb/No');
ylabel('BER');
legend('tight upper bound of BER' , 'theoretical BER ') ;
grid on
title('BPSK Modulation');
%---------------------- 2)8PSK -------------------------
%%%%%%%%%%%%%%%%%%%%%%% Mapper %%%%%%%%%%%%%%%%%%%%%%%%

PSK8_mapped = zeros(1 , (stream_of_bits-1)/3) ;
for i = 1 : (stream_of_bits-1)/3

    if Random_bits (i*3-2 : i*3) == [0 0 0]

        PSK8_mapped(i) = cos(0)+j*sin(0);

    elseif Random_bits (i*3-2 : i*3) == [0 0 1]
        PSK8_mapped(i) = cos(pi/4)+j*sin(pi/4);

    elseif Random_bits(i*3-2 : i*3) ==[0 1 1]

        PSK8_mapped(i) = cos(pi/2)+j*sin(pi/2);

    elseif Random_bits(i*3-2 : i*3) ==[0 1 0]

        PSK8_mapped(i) = cos(3*pi/4)+j*sin(3*pi/4);

    elseif Random_bits(i*3-2 : i*3) ==[1 1 0]

        PSK8_mapped(i) = cos(pi)+j*sin(pi);

    elseif Random_bits(i*3-2 : i*3) ==[1 1 1]

        PSK8_mapped(i) = cos(5*pi/4)+j*sin(5*pi/4);

    elseif Random_bits(i*3-2 : i*3) ==[1 0 1]

        PSK8_mapped(i) = cos(3*pi/2)+j*sin(3*pi/2);

    elseif Random_bits(i*3-2 : i*3) ==[1 0 0]

        PSK8_mapped(i) = cos(7*pi/4)+j*sin(7*pi/4);
end
end

🎉3 参考文献

[1]宋铁成,尤肖虎,沈连丰.基于OFDM系统信号处理方式的高速单载波系统[J].东南大学学报(自然科学版),2002(02):151-155.

部分理论引用网络文献,若有侵权联系博主删除。

🌈4 Matlab代码实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PSK调制是一种数字调制技术,它将数字信号转换为模拟信号,通过改变载波的相位来传输信息。2PSK调制是一种二进制调制方式,只有两个相位(0度和180度),通常用于数据传输。 以下是2PSK调制与解调系统MATLAB实现及性能分析步骤: 1. 生成二进制信号序列:使用randi函数生成长度为N的二进制信号序列。 2. 将二进制信号转换为符号序列:将二进制序列转换为1和-1的符号序列,其中1对应0度相位,-1对应180度相位。 3. 生成载波信号:使用cos函数生成与符号序列对应的载波信号。 4. 将符号序列和载波信号相乘:使用.*运算符将符号序列和载波信号相乘,得到调制信号。 5. 加入噪声:使用awgn函数向调制信号中加入高斯白噪声。 6. 解调信号:将加噪声的调制信号乘以载波信号的cos分量,得到解调信号。 7. 对解调信号进行低通滤波:使用fir1函数设计一个低通滤波器,对解调信号进行滤波。 8. 将解调信号转换为二进制序列:将解调信号分为若干个符号,使用sign函数将符号转换为1和-1,得到解调后的二进制序列。 以下是MATLAB代码实现: ```matlab % 生成二进制信号序列 N = 1000; data = randi([0 1],1,N); % 将二进制信号转换为符号序列 symbols = 2*data - 1; % 生成载波信号 fc = 1000; fs = 10000; t = 0:1/fs:(N-1)/fs; carrier = cos(2*pi*fc*t); % 将符号序列和载波信号相乘 mod_sig = symbols.*carrier; % 加入噪声 SNR = 10; noisy_sig = awgn(mod_sig,SNR); % 解调信号 demod_sig = noisy_sig.*carrier; % 对解调信号进行低通滤波 filter_order = 100; cutoff_freq = 2*fc/fs; b = fir1(filter_order,cutoff_freq); filtered_sig = filter(b,1,demod_sig); % 将解调信号转换为二进制序列 decoded_symbols = sign(filtered_sig); decoded_data = (decoded_symbols + 1)/2; ``` 性能分析:可以通过比较解调后的二进制序列和原始的二进制信号序列来评估系统的性能。可以计算误码率(BER)来量化解调器的性能。可以使用MATLAB的biterr函数计算BER,如下所示: ```matlab BER = biterr(data,decoded_data)/N; ``` 如果BER越小,则说明解调器性能越好。 ### 回答2: MATLAB的psk调制的目的是通过相位偏移键控(Phase Shift Keying,PSK)技术实现数字信号的调制和解调。PSK是一种常用的调频调制技术,通过调整信号的相位来传输数字信号。PSK调制用于将数字信号转换为模拟信号,以便能够在传输过程中传递和接收。 2PSK调制与解调系统MATLAB实现如下: 调制(Modulation): 假设有一个二进制数字序列,取值为0或1,通过将1映射为正弦波的正相位(0度),将0映射为正弦波的负相位(180度)。得到了一个二进制相位调制信号。 解调(Demodulation): 对接收到的相位调制信号进行采样,并计算出接收信号的幅度和相位。利用阈值判决,将幅度进行判别,小于阈值的判为0,大于阈值的判为1。 对于性能分析,主要考虑以下几个指标: 1. 误码率(Bit Error Rate):通过比较解调得到的二进制序列与原始输入序列,计算误码率,即错误比特的个数与总比特个数之比。 2. 符号误差率(Symbol Error Rate):将误码率计算得到的比特误码率转化为符号误码率,即错误符号的个数与总符号个数之比。 3. 带宽效率:通过占用的信道带宽与传输的信息量之比来评估系统的带宽利用率。 4. 传输速率:根据调制方式和解调方式的参数,评估系统的传输速率。 为了进行性能分析,可以在MATLAB中创建一个二进制数字序列,进行调制和解调,然后分析误码率、符号误码率等指标,并根据需求调整调制方式和解调方式的参数,比如增加信噪比(Signal to Noise Ratio)等,来评估性能的变化。 ### 回答3: MATLAB是一种用于计算、数据分析和可视化的编程语言和环境。在通信领域,MATLAB可以用于设计和分析不同调制技术的性能。其中,PSK调制是一种基于相位的调制技术。 PSK调制的目的是将数字信号转换为相位变化的模拟信号。这种调制技术常用于数字通信中,特别是在无线通信中。通过改变信号的相位,可以传输更多的信息,提高传输速率和频谱效率。 2PSK调制是一种PSK调制的特殊情况,其中使用两个相位值来表示二进制数字0和1。当发送0时,信号的相位为0度;当发送1时,信号的相位为180度。在2PSK调制系统中,调制器将二进制数据转换为对应的相位值,并通过信道传输。解调器接收到经过信道传输的信号后,通过检测信号的相位来恢复原始的二进制数据。 在MATLAB实现2PSK调制和解调系统,可以使用MATLAB的通信工具箱。该工具箱提供了多种调制和解调技术的函数和工具,使得实现和分析这些系统变得更加方便。利用这些函数和工具,可以编写MATLAB代码实现2PSK调制和解调,并进行性能分析。性能分析可以包括比特错误率(BER)的计算和绘制,以评估系统的可靠性和性能。 总结一下,MATLAB可以用于实现和分析2PSK调制和解调系统。通过利用MATLAB的通信工具箱提供的函数和工具,可以方便地实现这些系统,并进行性能分析。这些工具和函数可以帮助我们更好地理解和优化通信系统的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值