?? exp4_4.m
字號:
clf;
clear;
clc;
%—— 產(chǎn)生隨機(jī)‘0’,‘1’信號序列
N=2000;
N1=20;
fc=3;
data_bit=randint(1,N);
%—— 產(chǎ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('平方根升余弦函數(shù)序列');
grid on;
delay0=floor(length(h0)/2);
for i=1:N %——將信號序列轉(zhuǎ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個(gè)點(diǎn)的轉(zhuǎn)換信號序列圖
title('原始BPSK信號');
xlabel('t/s');
ylabel('信號幅度');
grid on;
%——BPSK調(diào)制——————————————BPSK調(diào)制———————————
%——20倍過采樣,過采樣點(diǎn)數(shù)應(yīng)為上面的sinc函數(shù)從0到第一個(gè)零點(diǎn)間的樣點(diǎn)數(shù),
%——才能保證符號間無串?dāng)_
%——在所產(chǎn)生星座信號序列每點(diǎn)間插入(N1-1)個(gè)值
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); %——信號序列與沖擊函數(shù)卷積
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('升余弦函數(shù)成形');
xlabel('t /s');
ylabel('信號幅度');
%——去掉濾波器輸出延時(shí)
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('信號幅度');
%——調(diào)制原始信號序列
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('信號幅度');
%—————————有記憶調(diào)制————————————有記憶調(diào)制—————————
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); %——信號序列與沖擊函數(shù)卷積
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('升余弦函數(shù)成形');
xlabel('t /s');
ylabel('信號幅度');
%——去掉濾波器輸出延時(shí)
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('信號幅度');
%——調(diào)制原始信號序列
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('信號幅度');
%——作出兩種調(diào)制方式的功率譜密度圖
F_BPSK=fftshift(fft(out_sig)); %——頻譜對稱平移
F_INBN=fftshift(fft(out_sig1)); %——頻譜對稱平移
%——三種功率譜密度圖,橫軸采樣點(diǎn)數(shù),縱軸功率譜密度
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調(diào)制功率譜密度比較');
ylabel('功率譜密度(db)');
xlabel('頻率(HZ)');
legend('F_BPSK','F_INBN');
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -