📄 stcc_ofdm_freq.m
字号:
function Pb=stcc_ofdm_freq(SNR_dB)
% clc
% clear all
% SNR_dB=24;
%------------------------------------------------------采用QPSK调制
Cons=sqrt(1/2)*[1 j -1 -j];
%------------------------------------------------------采用指数衰落信道
atten_power = exp(-[0:5]);%功率时延谱 0us~5us
path_delay = [0:5]*20;
aver_power=atten_power/sum(atten_power);% 进行功率归一化
%------------------------------------------------------信噪比,这里定义的信噪比是接收天线上每个子载波上的信噪比,把每个子载波上的信号功率归一。
Eb=1;
SNR=10^(SNR_dB/10);
NoisePower=Eb/(2*SNR);
%-----------------------------------------------------
N=128; % OFDM的子载波数
Frame=400; % 仿真的OFDM符号数
ErrorNum=0; %误码统计
for i=1:1:Frame
%------------------------------------------------------- 产生信道的频域响应
len=length(path_delay);
for k=1:1:len
h1(k)=sqrt(1/2*aver_power(k))*(randn(1)+j*randn(1)); %产生时域的信道,6条径
h2(k)=sqrt(1/2*aver_power(k))*(randn(1)+j*randn(1));
end
H1=zeros(1,N);
H2=zeros(1,N);
for k=1:1:len
H1(path_delay(k)+1)=h1(k);
H2(path_delay(k)+1)=h2(k);
end
H1_freq=fft(H1); %时域的信道进行FFT,转化为频域的形式
H2_freq=fft(H2);
%---------------------------------------------------------产生发送的OFDM符号
send=STTC_code(N-1); %进行空时网格编码
send1=send(1,:);
send2=send(2,:);
Noise=sqrt(NoisePower)*(randn(1,N)+randn(1,N));
r=H1_freq.*send1+H2_freq.*send2+Noise; %在两个天线上发送
R=decode(r,H1_freq,H2_freq);%运用维特比译码
ErrorNum=ErrorNum+sum(send(2,1:1:N)~=R);%统计总的误码个数
end
Pb=ErrorNum/(Frame*N) %解出误码率
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -