資源簡介
通過隨機數產生二進制碼元,然后進行調制。再將調制信號加入高斯噪聲,通過帶通濾波器進入解調模塊最后抽樣判決重建碼元。并比較重建后的碼元與重建前的區別畫出誤碼率曲線

代碼片段和文件信息
clear?all;
close?all;
clc
Ts?=?1;%碼元速率
N_sample?=?100;?%采樣速率
dt?=?Ts?/?N_sample;
N?=?10000;?%碼元個數
t?=?0?:?dt?:?(N?*?N_sample?-?1)?*?dt;
RAN?=?randi([01]1N);?%?隨機0?1序列
gt1?=?ones(1N_sample);
code?=?[];
RAN0?=?RAN;
Progressbar=waitbar(0‘Please?wait(1/2)...‘);%創建進度條
for?i?=?1?:?N
????waitbar(i/N);?
????if(RAN0(i)?==?0)
????????RAN0(i)?=?-1;
????end
????code?=?[code?RAN0(i)*gt1];?%采樣后碼元
end
close(Progressbar);
fc?=?5;
CarrierWave?=?sin(2*pi*fc*t);???%載波信號
BPSK_Wave?=?code.*?CarrierWave;?%調制
fft_code1?=?fftshift(fft(BPSK_Wave));?%?求序列的頻譜
PE1?=?10?*?log10(abs(fft_code1)?.^?2?/?(N?*?Ts));?%?公式法求功率譜密度
PEL1?=?(-length(fft_code1)?/?2?:?length(fft_code1)?/?2?-?1)?/?N;?%?轉換成對應頻率(-L/2:L/2-1)*fs/L
%%%%%%%%%%%%%%?繪制信號?%%%%%%%%%%%%%%%%%%
figure?(1)
subplot(311);plot(tcode);axis([010-1.51.5]);title(‘碼元序列‘);xlabel(‘t/s‘);ylabel(‘幅度‘);%碼元序列
subplot(312);plot(tBPSK_Wave);axis([010-1.51.5]);title(‘BPSK波形‘);xlabel(‘t/s‘);ylabel(‘幅度‘);%BPSK波形
subplot(313);plot(PEL1PE1);axis([fc-5fc+5-100100]);xlabel(‘頻率/HZ‘);ylabel(‘P/dB‘);title(‘功率譜密度‘);%功率譜密度
%%%%%%%%%%%%%%%%%計算誤碼率?%%%%%%%%%%%%%%%%%%%
Pe?=?[];
h=waitbar(0‘Please?wait(2/2)...‘);%創建進度條
%%%%%%%%%%%%%???加入高斯噪聲????????%%%%%%%%%%%%%%%
SNR?=?-30?:?30;
SNR0?=?SNR+10*log10(25);%等效窄帶噪聲信噪比
for?i?=1?:?length(SNR);
????BPSK_Noise?=?awgn(BPSK_WaveSNR(i));
????waitbar(i/length(SNR));?
%%%%%%%%%%%%%%%%%帶通濾波器%%%%%%%%%%%%%%%%%%%%%%
??????BPF?=?fir1(101[(fc-1)/(N_sample/2)(fc+1)/(N_sample/2)]);
??????BPSK_BPF?=?filter(BPF1BPSK_Noise);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??????
??%%%%%%%%%%%%????BPSK信號的解調(相干)%%%%%%%%%%%%%
%?????BPSK_Demo?=?BPSK_Noise.*?CarrierWave?;%相干解調
%?????fp?=?1;?%截至頻率2.5hz
%?????fcm?=?2*fp/N_sample;?%歸一化頻率
%?????LPF??=?fir1(30fcm);?%反復實驗得出階數
%?????BPSK_LPF?=?filter2(LPFBPSK_Demo);?%此處不用conv卷積,因為長度增加??
??????fp?=?1;
??????BPSK_LPF?=?demodulation(BPSK_NoiseCarrierWavefpN_sample);??%將帶通后解調過程壓縮為子函數輸出為過低通后波形
????%%%%%%%%%%%%%%%%?抽樣判決?%%%%%%%%%%%%%%%%%%%
????code_back?=?[];
????????count?=?0;
????????for?q?=?1:N*N_sample
????????????if(BPSK_LPF(q)?>?0)
????????????????code_back?=?1;?????
????????????else
????????????????code_back?=?-1;
????????????end
????????????if?(code_back?~=?code(q))
????????????????count?=?count?+?1;
????????????end
????????end
????????error?=?count?/?(N*N_sample);
????????Pe?=?[Pe?error];
end
close(h);
figure?(2)
snr?=?10.^(0.1.*SNR);
Pe_theor?=?(erfc(sqrt(snr))).*(1-0.5*erfc(sqrt(snr)));
semilogy(SNR0Pe‘b‘);xlabel(‘SNR/db‘);ylabel(‘誤碼率‘);hold?on;title(‘BPSK誤碼率曲線‘);
semilogy(SNRPe_theor‘r‘);grid?on;legend(‘實際值‘‘理論值‘);axis([-4810^-41])%xlabel(‘SNR/db‘);ylabel(‘誤碼率/10^x‘);title(‘BPSK誤碼率曲線‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2957??2018-05-31?15:16??BPSK.m
-----------?---------??----------?-----??----
?????????????????2957????????????????????1
- 上一篇:復合梯形公式與復合辛普森公式MATLAB
- 下一篇:MSK調制解調
評論
共有 條評論