目錄
一、理論基礎
二、核心程式
三、仿真測試結果
作者ID :fpga和matlab
擅長技術:
1.無線基帶,無線圖傳,編解碼
2.機器視覺,圖像處理,三維重建
3.人工智能,深度學習
4.智能控制,智能優化
5.其他
一、理論基礎
在無線通信系統中,信道特性的變化對通信品質有着重要的影響。對通信信道的自适應均衡是無線通信中的一個重要問題。通過信道自适應均衡可以在信道特性發生變化後快速适應至正常通信。本課題主要研究由滑動自回歸系統構成的信道均衡模型。由于LMS算法具有結構簡單,運作速度快的優點。本本課題使用LMS算法在滑動自回歸系統上實作信道自适應均衡,驗證了LMS算法在二階條件下的收斂過程以及在QPSK調制模型的自适應均衡結果。通過驗證可以得出LMS算法在信道自适應均衡過程中可以得到較好的結果。
自适應均衡屬于自适應信号處理的應用範疇,各種各樣的自适應均衡算法如迫零(ZF)算法、最小均方(LMS)算法、遞歸最小二乘(RLS)算法、變換域均衡算法、Bussgang 算法、高階或循環統計量算法、基于非線性濾波器或神經網絡的均衡算法等應運而生。均衡器通常工作在接收機的基帶或中頻信号部分,基帶信号的複包絡含有信道帶寬信号的全部資訊,是以,均衡器通常在基帶信号完成估計信道沖激響應和解調輸出信号中實作自适應算法等,本文選擇了兩種典型的自适應算法:以LMS自适應均衡器和RLS自适應均衡器為基礎,用MATLAB 仿真軟體對LMS和RLS兩種算法進行仿真,比較并分析了兩種算法的性能。
LMS算法有它自身的優點,但是,由于LMS算法采用梯度矢量的瞬時估計,有大的方差,以至于不能獲得最優濾波性能。
二、核心程式
clc;
clear;
close all;
warning off;
addpath 'func\'
%**************************************************************************
%**************************************************************************
%********(0)整個算法的流程如下所示:
%********(1)産生信号
%********(2)QPSK調制
%********(3)信道,加入多徑信号
%********(4)QPSK解調
%********(5)LMS均衡
%********(6)判決
%********(7)得到誤碼率,眼圖,星座圖
%**************************************************************************
%**************************************************************************
Symble_Rate = 1e6; %符号速率
Sample_Frequency = 32e6; %時鐘采樣率
Frequency_carrier = 512e6; %初始載波頻率
Number = 40000; %仿真bit符号數
SNR = 0:1:12;
alpha = 0.5; %成形濾波和比對濾波器的滾降系數
Delay = [0 20 50]/Sample_Frequency; %設定多徑延遲
Gain = [0 -4 -8]; %設定每一徑的衰減
Lms_Coff1 = 0.99;
Delta = 0.001;
Iter = 400;
%步驟一:産生二進制信号
Signal = double(rand(1,Number) >= 0.5);
%步驟二:産生QPSK映射信号
QPSK_signal = func_QPSK_map(Signal,Number);
%步驟三:進行成形濾波,乘以載波進行QPSK的調制,DAC為最後發送端發送的中頻信号
DAC = func_QPSK_Modulate(QPSK_signal,Sample_Frequency,Symble_Rate,Frequency_carrier,alpha);
%開始循環,對不同的SNR下的誤碼率進行仿真
for i = 1:length(SNR)
i
%步驟四:通過多徑信道
ADC = func_multipath(DAC,Sample_Frequency,Delay,Gain,SNR(i),Symble_Rate);
%步驟五:數字下變頻
I_Q = func_QPSK_DeModulate(ADC,Sample_Frequency,Frequency_carrier,Symble_Rate,alpha);
%步驟六:LMS均衡算法
[Data,Learn] = func_LMS_eq(QPSK_signal,Number,I_Q,Lms_Coff1,Delta,Iter);
%步驟七:判決
R = func_check(Data,Number);
%步驟八:計算誤碼率誤碼率
error = find(Signal(2*Iter+1:end)-R(2*Iter+1:end));
error_sum = length(error);
error_rate(i) = error_sum/length(Signal(2*Iter+1:end));
%步驟九:繪制中間圖
figure(1);
plot(real(QPSK_signal),imag(QPSK_signal),'r*');
title('發送端:QPSK映射星座圖')
figure(2);
plot(DAC);
title('上變頻:QPSK映射星座圖')
figure(3);
plot(ADC);
title('多徑信道:QPSK映射星座圖')
figure(4);
plot(I_Q);
title('下變頻後:QPSK映射星座圖')
figure(5);
plot(Data);
title('LMS均衡後:QPSK映射星座圖')
end
figure(6);
semilogy(SNR,error_rate,'b-*');
grid on
xlabel('SNR(db)');
ylabel('Ber');
figure(7);
subplot(211);
s = real(Data);
L = floor(length(s)/200);
for jj=1:200
plot(s((jj-1)*L+1:(jj-1)*L+L));
hold on;
end
subplot(212);
s = imag(Data);
L = floor(length(s)/200);
for jj=1:200
plot(s((jj-1)*L+1:(jj-1)*L+L));
hold on;
end
figure(8);
subplot(211);
plot(real(I_Q(2000:2400)));
subplot(212);
plot(real(Data(2000:2400)));
figure(9);
plot(abs(Learn(11:end)));
save lms.mat SNR error_rate
三、仿真測試結果
本課題仿真所涉及到的仿真參數如下所示:
參數 | 含義 | 值 |
Symble_Rate | 符号速率 | 1M |
Sample_Frequency | 時鐘采樣速率 | 32M |
Frequency_carrier | 載波頻率 | 512M |
Number | 仿真bit個數 | 40000 |
SNR | SNR | 0,1,2,3,4,5,6,7,8,9,10,11,12 |
alpha | 濾波器滾降系數 | 0.5 |
Delay | 多徑延遲 | 20,50 |
Gain | 多徑增益 | -4,-8 |
Lms_Coff1 | LMS算法系數1 | 0.99 |
Delta | LMS算法系數2 | 0.001 |
Iter | LMS疊代次數 | 400 |
QPSKLMS均衡後輸出
圖1的仿真結果是各個仿真過程中的星座圖,從上面的仿真結果可知,通過多徑信道之後,系統的星座圖明顯惡化,在通過LMS均衡之後,系統的星座圖得到改善。
從圖3的仿真結果可知,通過LMS均衡之後,系統的符号資訊得到明顯的改善。
圖5 LMS算法收斂曲線