单极性归零NRZ码、双极性非归零NRZ码、2ASK、2FSK、2PSK、2DPSK及MATLAB仿真

二进制调制团圆饭

源代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  单极性归零NRZ码、双极性非归零NRZ码、2ASK、2FSK、2PSK、2DPSK的产生
%  观察二进制数字信号码元速率和它的带宽的关系
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc; 
clear all;
close all;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                参数设置 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fs = 8000;               % 采样频率
fc1 = 200;               % 载波频率
fc2 = 800;               % 载波频率
RB = 1e2;                % 码元速率
my_count=fs/RB;          % 一个码元的采样点数
M = 2;                   % 二进制调制
N = 100;                 % 码元数
count=my_count*N;        % 总的采样点数
t = 0:1/fs:(count-1)/fs; % 信号持续时间

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%           产生原始信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  randi函数:生成0 1的单极性序列
%  第一个参数:生成随机序列的最大值  第2个参数:行数   第3个参数:列数
s = randi([0,1],N,1);  % 基带序列

y1 = zeros(1,count);  % 单极性不归零信号( 0+1表示数字信息)
y2 = zeros(1,count);  % 双极性不归零信号(-1+1表示数字信息)
y3 = zeros(1,count);  % 差分信号
% 1对应π,0对应0
last_bit = -1;  % 初始值为-1
for n = 0:N-1
    y1((n*my_count+1):((n+1)*my_count)) = s(n+1); %  内插 
    
    if s(n+1) == 1
        y2((n*my_count+1):((n+1)*my_count)) = 1;  % 双极性不归零信号
        last_bit = -last_bit;% 取反
        y3((n*my_count+1):((n+1)*my_count)) = last_bit; % 如果基带信号为1,y3=1
    else  % s(n+1) == 0
        y2((n*my_count+1):((n+1)*my_count)) = -1;
        y3((n*my_count+1):((n+1)*my_count)) = last_bit;  % 如果之前s的值有过1,那么last_bit的值就会取一次反
    end
    
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%     单极性归零信号( 0+1表示数字信息)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S = fftshift(fft(y1));
L=length(y1);
P=abs(S)/L;
f=(0:L-1)*fs/L-fs/2;
figure(1)
subplot(2,1,1);
stem(t,y1);grid minor;
title('单极性归零基带信号时域波形');
subplot(2,1,2);
plot(f,P);grid minor;
xlabel('f/Hz');ylabel('频谱');
title('单极性归零基带信号频谱');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%              2ASK调制
%  当幅度=1时,与载波相乘   当幅度=0时,0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s_ask = y1.*cos(2*pi*fc2*t);
S_ask = fftshift(fft(s_ask));
P_ask=abs(S_ask)/L;
figure(2)
subplot(2,1,1);
plot(t,s_ask);grid minor;
title('2ASK信号时域波形');
subplot(2,1,2);
plot(f,P_ask);grid minor;
xlabel('f/Hz');ylabel('频谱');
title('2ASK信号频谱');


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%              2FSK调制
% 当幅度=1时,与载波f1相乘;当幅度=0时,与载波f2相乘
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s_fsk = y1.*cos(2*pi*fc1*t) + (~y1).*sin(2*pi*fc2*t);
S_fsk = fftshift(fft(s_fsk));
P_fsk=abs(S_fsk)/L;
figure(3)
subplot(2,1,1);
plot(t,s_fsk);grid minor;
title('2FSK信号时域波形');
subplot(2,1,2);
plot(f,P_fsk);grid minor;
xlabel('f/Hz');ylabel('频谱');
title('2FSK信号频谱');



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%      双极性归零信号(-1+1表示数字信息)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S = fftshift(fft(y2));
P=abs(S)/L;
figure(4);
subplot(2,1,1);
stem(t,y2);grid minor;
title('双极性归零基带信号时域波形');
subplot(2,1,2);
plot(f,P);grid minor;
xlabel('f/Hz');ylabel('频谱');
title('双极性归零基带信号频谱');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%               BPSK信号 
%   相移键控利用载波的变化来传递数字信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s_psk = y2.*cos(2*pi*fc2*t);
S_psk = fftshift(fft(s_psk));
P_BPSK=abs(S_psk)/L;
figure(5);
subplot(2,1,1);
plot(t,s_psk);grid minor;
title('BPSK信号时域波形');
subplot(2,1,2);plot(f,P_BPSK);grid minor;
xlabel('f/Hz');ylabel('频谱');
title('BPSK信号频谱');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%               2DPSK信号  
%  2DPSK是利用前后相邻码元的载波相对相位变化来传递数字信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s_2dpsk = y3.*cos(2*pi*fc2*t);
S_2dpsk = fftshift(fft(s_2dpsk));
P_2DPSK=abs(S_2dpsk)/L;
figure(6);
subplot(2,1,1);
plot(t,s_2dpsk);grid minor;
title('2DPSK信号时域波形');
subplot(2,1,2);
plot(f,P_2DPSK);grid minor;
xlabel('f/Hz');ylabel('频谱');
title('2DPSK信号频谱');

仿真结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值