Q:实际工程应用发射端调制容易理解,接收端解调一般采用LLR(对数似然比)软解调办法。
具体算法推导过程可参加网上资源,最后一般采用优化后LLR形式做代码实现。
仿真思路:
step1:生成随机bit作为待调制信号sig
step2:将sig经QPSK调制
step3:调制后信号过awgn信道,改变snr,观察过信道后信号变化
step4:接收端QPSK解调,计算误码率
备注:源程序略做修改,只是观察中间信号变化
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46%% Constants FRM=2048; MaxNumErrs=200;MaxNumBits=1e7; EbNo_vector=0:10;BER_vector=zeros(size(EbNo_vector)); %% Initializations Modulator = comm.QPSKModulator('BitInput',true); AWGN = comm.AWGNChannel; DeModulator = comm.QPSKDemodulator('BitOutput',true); BitError = comm.ErrorRate; %% Outer Loop computing Bit-error rate as a function of EbNo for EbNo = EbNo_vector snr = EbNo + 10*log10(2); AWGN.EbNo=10; numErrs = 0; numBits = 0;results=zeros(3,1); %% Inner loop modeling transmitter, channel model and receiver for each EbNo % while ((numErrs < MaxNumErrs) && (numBits < MaxNumBits)) % Transmitter u = randi([0 1], FRM,1); % Generate random bits mod_sig = step(Modulator, u); % QPSK Modulator scatterplot(mod_sig); % Channel rx_sig = step(AWGN, mod_sig); % AWGN channel % rx_sig = awgn(mod_sig,20,'measured'); % Receiver scatterplot(rx_sig); y = step(DeModulator, rx_sig); % QPSK Demodulator results = step(BitError, u, y); % Update BER numErrs = results(2); numBits = results(3); % end % Compute BER ber = results(1); bits= results(3); %% Clean up & collect results reset(BitError); BER_vector(EbNo+1)=ber; end %% Visualize results EbNoLin = 10.^(EbNo_vector/10); theoretical_results = 0.5*erfc(sqrt(EbNoLin)); semilogy(EbNo_vector, BER_vector) grid;title('BER vs. EbNo - QPSK modulation'); xlabel('Eb/No (dB)');ylabel('BER');hold; semilogy(EbNo_vector,theoretical_results,'dr');hold; legend('Simulation','Theoretical');
下图:左边snr = 10db,过信道后的星座图,右图snr = 20db,过信道后的调制信号
最后
以上就是体贴向日葵最近收集整理的关于第三章 pro1 QPSK调制与解调的全部内容,更多相关第三章内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复