日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于MATLAB的MIMO系统分层空时码的仿真

發布時間:2025/4/5 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于MATLAB的MIMO系统分层空时码的仿真 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在這里,我們采用2*2的MIMO系統,根據上面的理論,我們開始設計一個簡單的MIMO系統。

??? 首先,定義發送天線和接收天線,這里根據課題要求,都設置為2,當然可以根據實際的需要將系統設置為我們所需要的數目,我們將對不同天線數目的系統做簡單的對比。

???

這里我們根據前面的理論分析,將信道理論做間的處理,得到一個簡單的信道模型,其表達式如上代碼所示。

將當送信號做串并處理,將處理得到的信號放入到sMatrix0矩陣中,這一步比較簡單,這里就不多做介紹了。

這里,將信號做BPSK調制,然后利用高斯白燥聲來模擬信道。通過以上步驟,我們基本完成過了MIMO系統的發送模塊的設計。

在接收端,我們主要做對系統的逆運算處理就可以了,即PSK解調和并串轉變就可以了。這樣一個簡單的2*2MIMO系統就完成了。下面我們將對系統的做簡單的仿真分析。

圖3-1 2*2MIMO系統性能仿真

圖3-2 不同天線數目MIMO系統性能比較

??? 如上圖所示,自上而下分別為8*8MIMO系統性能曲線,4*4MIMO MIMO系統性能曲線和2*2 MIMO系統性能曲線,通過比較,當天線數目越多則MIMO系統的性能越好,當然在實際中,我們更多的采用8*8 MIMO系統,從而獲得更高性能的通信質量。

部分核心代碼:

clc;
clear;

O=[1 -2 -3;2+j 1+j 0;3+j 0 1+j;0 -3+j 2+j]; ? ? ? ? ? ? ? ? ? ? ? ??
Nt=2; ? ? ?%發送天線個數 ? ? ? ??
Nr=2; ? ? ?%接收天線數量

timer=4; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Number_bit=1000; ? ?%發送符號數量 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
mod=4; ? ? ? ??

min_snr=3; ? ? ?%最小信噪比 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
max_snr=15; ? ? %最大信噪比

num_X=1;
num_bit_per_sym=log2(mod);%每個符號所有的比特數

for cc_ro=1:timer
? ? for cc_co=1:Nt
? ? ? ? num_X=max(num_X,abs(real(O(cc_ro,cc_co))));
? ? end
end

co_x=zeros(num_X,1);
for con_ro=1:timer ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? for con_co=1:Nt
? ? ? ? if abs(real(O(con_ro,con_co)))~=0
? ? ? ? ? ? delta(con_ro,abs(real(O(con_ro,con_co))))=sign(real(O(con_ro,con_co)));
? ? ? ? ? ? epsilon(con_ro,abs(real(O(con_ro,con_co))))=con_co;
? ? ? ? ? ? co_x(abs(real(O(con_ro,con_co))),1)=co_x(abs(real(O(con_ro,con_co))),1)+1;
? ? ? ? ? ? eta(abs(real(O(con_ro,con_co))),co_x(abs(real(O(con_ro,con_co))),1))=con_ro;
? ? ? ? ? ? coj_mt(con_ro,abs(real(O(con_ro,con_co))))=imag(O(con_ro,con_co));
? ? ? ? end
? ? end
end

eta=eta.'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
eta=sort(eta);
eta=eta.';
for SNR=min_snr:max_snr ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? clc
? ? disp('Wait until SNR=');disp(max_snr);
? ? SNR
? ? n_err_sym=0;
? ? n_err_bit=0;
? ? graph_inf_sym(SNR-min_snr+1,1)=SNR;
? ? graph_inf_bit(SNR-min_snr+1,1)=SNR;
? ? for con_sym=1:Number_bit
? ? ? ? bi_data=randint(num_X,num_bit_per_sym); ? ? ? ? ? ? ? ? ? ??
? ? ? ? de_data=bi2de(bi_data); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? data=pskmod(de_data,mod,0,'gray');
? ? ? ? H=randn(Nt,Nr)+j*randn(Nt,Nr); ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? XX=zeros(timer,Nt);
? ? ? ? for con_r=1:timer ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? for con_c=1:Nt
? ? ? ? ? ? ? ? if abs(real(O(con_r,con_c)))~=0
? ? ? ? ? ? ? ? ? ? if imag(O(con_r,con_c))==0
? ? ? ? ? ? ? ? ? ? ? ? XX(con_r,con_c)=data(abs(real(O(con_r,con_c))),1)*sign(real(O(con_r,con_c)));
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? XX(con_r,con_c)=conj(data(abs(real(O(con_r,con_c))),1))*sign(real(O(con_r,con_c)));
? ? ? ? ? ? ? ? ? ? end
? ? ? ? ? ? ? ? end
? ? ? ? ? ? end
? ? ? ? end ??
? ? ? ??
? ? ? ??
? ? ? ? H=H.';
? ? ? ? XX=XX.';
? ? ? ? snr=10^(SNR/10);
? ? ? ? Noise=(randn(Nr,timer)+j*randn(Nr,timer)); ? ? ? ? ? ? ??
? ? ? ? Y=(sqrt(snr/Nt)*H*XX+Noise).'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? H=H.'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? for co_ii=1:num_X
? ? ? ? ? ? for co_tt=1:size(eta,2)
? ? ? ? ? ? ? ? if eta(co_ii,co_tt)~=0
? ? ? ? ? ? ? ? ? ? if coj_mt(eta(co_ii,co_tt),co_ii)==0
? ? ? ? ? ? ? ? ? ? ? ? r_til(eta(co_ii,co_tt),:,co_ii)=Y(eta(co_ii,co_tt),:);
? ? ? ? ? ? ? ? ? ? ? ? a_til(eta(co_ii,co_tt),:,co_ii)=conj(H(epsilon(eta(co_ii,co_tt),co_ii),:));
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? r_til(eta(co_ii,co_tt),:,co_ii)=conj(Y(eta(co_ii,co_tt),:));
? ? ? ? ? ? ? ? ? ? ? ? a_til(eta(co_ii,co_tt),:,co_ii)=H(epsilon(eta(co_ii,co_tt),co_ii),:);
? ? ? ? ? ? ? ? ? ? end
? ? ? ? ? ? ? ? end
? ? ? ? ? ? end
? ? ? ? end
? ? ? ? RR=zeros(num_X,1);
? ? ? ? for ii=1:num_X ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? for tt=1:size(eta,2)
? ? ? ? ? ? ? ? for jj=1:Nr
? ? ? ? ? ? ? ? ? ? if eta(ii,tt)~=0
? ? ? ? ? ? ? ? ? ? ? ? RR(ii,1)=RR(ii,1)+r_til(eta(ii,tt),jj,ii)*a_til(eta(ii,tt),jj,ii)*delta(eta(ii,tt),ii);
? ? ? ? ? ? ? ? ? ? end
? ? ? ? ? ? ? ? end
? ? ? ? ? ? end
? ? ? ? end
? ? ? ? re_met_sym=pskdemod(RR,mod,0,'gray'); ? ? ? ? ? ? ? ? ? ??
? ? ? ? re_met_bit=de2bi(re_met_sym);
? ? ? ? re_met_bit(1,num_bit_per_sym+1)=0; ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? for con_dec_ro=1:num_X ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? if re_met_sym(con_dec_ro,1)~=de_data(con_dec_ro,1)
? ? ? ? ? ? ? ? n_err_sym=n_err_sym+1;
? ? ? ? ? ? ? ? for con_dec_co=1:num_bit_per_sym
? ? ? ? ? ? ? ? ? ? if re_met_bit(con_dec_ro,con_dec_co)~=bi_data(con_dec_ro,con_dec_co)
? ? ? ? ? ? ? ? ? ? ? ? n_err_bit=n_err_bit+1;
? ? ? ? ? ? ? ? ? ? end
? ? ? ? ? ? ? ? end
? ? ? ? ? ? end
? ? ? ? end
? ? end
? ? Perr_sym=n_err_sym/(num_X*Number_bit); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? graph_inf_sym(SNR-min_snr+1,2)=Perr_sym;
? ? Perr_bit=n_err_bit/(num_X*Number_bit*num_bit_per_sym);
? ? graph_inf_bit(SNR-min_snr+1,2)=Perr_bit;
end
x_sym=graph_inf_sym(:,1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
y_sym=graph_inf_sym(:,2);
subplot(211);
semilogy(x_sym,y_sym,'r-*');

x_bit=graph_inf_bit(:,1);
y_bit=graph_inf_bit(:,2);
subplot(212);
semilogy(x_bit,y_bit,'b-*');


?

A01-05

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的基于MATLAB的MIMO系统分层空时码的仿真的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。