資源簡介
本程序仿真了SISO SIMO MISO MIMO(with or without Alamouti Code),并進(jìn)行了性能比較,有詳細(xì)的說明文檔和公式推導(dǎo).
The BER performance for the SISO, SIMO, MISO with and without Alamouti, and MIMO with Alamouti is demonstrated in these resources.

代碼片段和文件信息
clc;
close?all;
clear?all;
%%?生成0?1隨機(jī)信號
len_s=1e5;?%?信號長度
sn=randi([01]1len_s);?%產(chǎn)生隨機(jī)信號
%%?采用BPSK生成調(diào)制信號
%?mod=?modem.pskmod(‘M‘?2?‘PhaseOffset‘?0?‘SymbolOrder‘...
%?????‘binary‘?‘InputType‘?‘integer‘);?%BPSK?調(diào)制函數(shù)
%?mod_sn=modulate(modsn);?%?調(diào)制信號
mod_sn=pskmod(sn2);
snr=-5:2:25;%信噪比
len_snr=length(snr);
ber_SISO=zeros(1len_snr);
ber_SIMO=zeros(1len_snr);
ber_MISO=zeros(1len_snr);
ber_MISO_stbc=zeros(1len_snr);
ber_MIMO=zeros(1len_snr);
for?ii=1:len_snr
sigma?=sqrt(0.5.*10.^(-snr(ii)./10));
%%?SISO-1*1
Q_noise?=?randn(1?len_s);
I_noise?=?randn(1?len_s);
noise?=?complex(I_noiseQ_noise);
noise?=?sigma.*noise;%高斯白噪聲
h_SISO=1/sqrt(2)*[randn(1len_s)?+?j*randn(1len_s)];
y_SISO=h_SISO.*mod_sn+noise;
%SISO信號檢測
w=(h_SISO).^(-1);
s_det=w.*y_SISO;
s_SISO=pskdemod(s_det2);%BPSK解調(diào)
error_SISO=find(s_SISO~=sn);%錯誤判決
ber_SISO(ii)=length(error_SISO)./len_s;
%%?SIMO-1*2
sn_SIMO=ones(21)*mod_sn;
%IQ兩路獨立產(chǎn)生噪聲
Q_noise?=?randn(2?len_s);
I_noise?=?randn(2?len_s);
noise?=?complex(I_noiseQ_noise);
noise?=?sigma.*noise;%高斯白噪聲
%?接收信號
h_SIMO=1/sqrt(2)*[randn(2len_s)?+?j*randn(2len_s)];
y_SIMO=h_SIMO.*sn_SIMO+noise;
%SIMO信號檢測
y_mrc=conj(h_SIMO(1:)).*y_SIMO(1:)+conj(h_SIMO(2:)).*y_SIMO(2:);
w=(abs(h_SIMO(1:)).^2+abs(h_SIMO(2:)).^2).^(-1);
s_det=w.*y_mrc;
s_SIMO=pskdemod(s_det2);%BPSK解調(diào)
error_SIMO=find(s_SIMO~=sn);%錯誤判決
ber_SIMO(ii)=length(error_SIMO)./len_s;
%%?MISO-2*1?without?STBC
sn_MISO=ones(21)*mod_sn;
%IQ兩路獨立產(chǎn)生噪聲
Q_noise?=?randn(1?len_s);
I_noise?=?randn(1?len_s);
noise?=?complex(I_noiseQ_noise);
noise?=?sigma.*noise;%高斯白噪聲
%?接收信號
h_MISO=1/sqrt(2)*[randn(2len_s)?+?j*randn(2len_s)];
y_MISO=sum(h_MISO.*sn_MISO1)+noise;
w=sum(h_MISO1).^(-1);
s_det=w.*y_MISO;
s_MISO=pskdemod(s_det2);%BPSK解調(diào)
error_MISO=find(s_MISO~=sn);%錯誤判決
ber_MISO(ii)=length(error_MISO)./len_s;
%%?MISO-2*1?with?STBC
sn_MISO_stbc=ones(21)*mod_sn;
%IQ兩路獨立產(chǎn)生噪聲
Q_noise?=?randn(2?len_s);
I_noise?=?randn(2?len_s);
noise?=?complex(I_noiseQ_noise);
noise?=?sigma.*noise;%高斯白噪聲
%?接收信號
h_MISO_stbc=1/sqrt(2)*[randn(2len_s)?+?j*randn(2len_s)];
y_MISO_stbc1=sum(abs(h_MISO_stbc).^21).*sn_MISO_stbc(1:)+conj(h_MISO_stbc(1:)).*noise(1:)+h_MISO_stbc(2:).*conj(noise(2:));
y_MISO_stbc2=sum(abs(h_MISO_stbc).^21).*sn_MISO_stbc(1:)+conj(h_MISO_stbc(2:)).*noise(1:)-h_MISO_stbc(1:).*conj(noise(2:));
w=sum(abs(h_MISO_stbc).^21).^(-1);
s_det1=w.*y_MISO_stbc1;
s_det2=w.*y_MISO_stbc2;
s_MISO_stbc1=pskdemod(s_det12);%BPSK解調(diào)
s_MISO_stbc2=pskdemod(s_det22);%BPSK解調(diào)
error_MISO_stbc1=find(s_MISO_stbc1~=sn);%錯誤判決
error_MISO_stbc2=find(s_MISO_stbc2~=sn);%錯誤判決
ber_MISO_stbc(ii)=(length(error_MISO_stbc1)+length(error_MISO_stbc2))./(2*len_s);
%%?MIMO-2*2?with?STBC
N?=?10^5;??????????????????????????????????????????????%?number?of?bits?or?symbols????????????????????????????????
nRx?=?2;?
??%?發(fā)射機(jī)
????ip?=?rand(1N)>0.5;????????????????????????????????%?generating?01?with?equal?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????12135??2014-12-28?15:57??BER_Performance.fig
?????文件?????280380??2015-04-27?17:17??Statement.docx
?????文件???????6064??2014-12-25?23:07??Alamouti.m
-----------?---------??----------?-----??----
???????????????298579????????????????????3
- 上一篇:MATLAB圖論工具箱
- 下一篇:基于matlab的信號頻域的相干分析
評論
共有 條評論