📄 exp4_4.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 + -