⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp4_4.m

📁 本程序实现产生几种调制方式的眼图并且对其进行比较
💻 M
字号:
clf;
clear;
clc;
%—— 产生随机‘0’,‘1’信号序列
N=2000;
N1=20;
fc=3;
data_bit=randint(1,N);

%—— 产生r=0.5的平方根升余弦滤波器
[h0,den] = rcosine(1,20,'fir/sqrt',0.5,4);
t=-4:0.05:4;
figure(1);
stem(t,h0,'.');
title('平方根升余弦函数序列');
grid on;
delay0=floor(length(h0)/2);

for i=1:N                      %——将信号序列转换为基上的向量值
    if data_bit(1,i)==1
       data_p(1,i)=1;
    else data_p(1,i)=-1;
    end
end
figure(2);
t1=0:9;
stem(t1,data_p(1:10),'.');      %——绘出10个点的转换信号序列图
title('原始BPSK信号');
xlabel('t/s');
ylabel('信号幅度');
grid on;

%——BPSK调制——————————————BPSK调制———————————

%——20倍过采样,过采样点数应为上面的sinc函数从0到第一个零点间的样点数,
%——才能保证符号间无串扰
%——在所产生星座信号序列每点间插入(N1-1)个值
sig=zeros(1,N1*length(data_p));
for i=1:length(data_p)
    sig(i*N1-(N1-1))=data_p(i);
end

sig_conv=conv(sig,h0);         %——信号序列与冲击函数卷积
figure(3);
t=0:1/N1:(length(sig_conv)-1)/N1;
plot(t(1:280),sig_conv(1:280),':.');
hold on;
i=121:20:321;
stem(t(i),sig_conv(i),'.r');
grid on;
title('升余弦函数成形');
xlabel('t /s');
ylabel('信号幅度');


%——去掉滤波器输出延时
out_sig(1:length(sig_conv)-2*delay0)=sig_conv(delay0+1:length(sig_conv)-delay0);
figure(4);
t=0:1/N1:(length(out_sig)-1)/N1;
plot(t(1:200),out_sig(1:200),':.');
hold on;
i=1:N1:10*N1+1;
stem(t(i),out_sig(i),'.r');
grid on;
title('去掉滤波器输出延迟之后的波形');
xlabel('t /s');
ylabel('信号幅度');


%——调制原始信号序列
t=0:1/N1:(length(out_sig)-1)/N1;
fcos=cos(2*pi*fc*t);
sym0_fc=fcos.*out_sig;
figure(5);
plot(t(1:200),sym0_fc(1:200));
grid on;
title('升余弦成形带通BPSK信号');
xlabel('t /s');
ylabel('信号幅度');

%—————————有记忆调制————————————有记忆调制—————————
b=zeros(1,N);
b(1,1)=data_p(1,1)+1;
for i=2:N
    b(1,i)=data_p(1,i-1)+data_p(1,i);
end
sig1=zeros(1,N1*length(b));
for i=1:length(b)
    sig1(i*N1-(N1-1))=b(1,i);
end

sig_conv1=conv(sig1,h0);         %——信号序列与冲击函数卷积
figure(6);
t=0:1/N1:(length(sig_conv1)-1)/N1;
plot(t(1:280),sig_conv1(1:280),':.');
hold on;
i=121:20:321;
stem(t(i),sig_conv1(i),'.r');
grid on;
title('升余弦函数成形');
xlabel('t /s');
ylabel('信号幅度');


%——去掉滤波器输出延时
out_sig1(1:length(sig_conv1)-2*delay0)=sig_conv1(delay0+1:length(sig_conv1)-delay0);
figure(7);
t=0:1/N1:(length(out_sig1)-1)/N1;
plot(t(1:200),out_sig1(1:200),':.');
hold on;
i=1:N1:10*N1+1;
stem(t(i),out_sig1(i),'.r');
grid on;
title('去掉滤波器输出延迟之后的波形');
xlabel('t /s');
ylabel('信号幅度');


%——调制原始信号序列
t=0:1/N1:(length(out_sig1)-1)/N1;
fcos1=cos(2*pi*fc*t);
sym0_fc1=fcos1.*out_sig1;
figure(8);
plot(t(1:200),sym0_fc1(1:200));
grid on;
title('升余弦成形带通BPSK信号');
xlabel('t /s');
ylabel('信号幅度');

%——作出两种调制方式的功率谱密度图
F_BPSK=fftshift(fft(out_sig));     %——频谱对称平移
F_INBN=fftshift(fft(out_sig1));     %——频谱对称平移
 
%——三种功率谱密度图,横轴采样点数,纵轴功率谱密度  
figure(9);
f=8*(-10000:9999)/40000;
semilogy(f,abs(F_BPSK(10001:30000))/max(abs(F_BPSK)),'r');
hold on;
  f1=8*(-10000:9999)/40000;
  semilogy(f1,abs(F_INBN(10001:30000))/max(abs(F_INBN)),'b');
  grid on;
  title('BPSK,INBN调制功率谱密度比较');
  ylabel('功率谱密度(db)');
  xlabel('频率(HZ)');
  legend('F_BPSK','F_INBN');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -