我试图运行一个基本的ofdm代码从mimo - ofdm无线通信与Matlab的书中使用Matlab但是我越来越模拟一个空白页面。我可以知道什么是代码的问题吗?

39视图(30天)
% OFDM_basic.m
清晰的所有
NgType = 1;%为循环前缀/ zeropadding NgType = 1/2
如果NgType = = 1元=CP的;elseifNgType = = 2元=“ZP”;
结束
Ch = 0;%对AWGN /多路通道的Ch = 0/1
如果Ch = = 0, chType =“摘要”;Target_neb = 100;其他的chType =“CH”;Target_neb = 500;结束
图(Ch + 1), clf
PowerdB = [0 8 -17 -21 -25];%利用权力配置文件“分贝”频道
延迟= [0 3 5 6 8];%通道延迟“样本”
权力= 10。^ (PowerdB / 10);%通道配置文件获取能量的线性样本
Ntap =长度(PowerdB);%频道利用数量
禄=延迟(结束)+ 1;%通道长度
所以= 4;M = 2 ^平衡;%为QPSK调制顺序= 2 / / 4/6 / 16 qam / 64 qam
Nfft = 64;% FFT大小
Ng = Nfft / 4;% GI(保护间隔)长度(Ng =没有GI)
Nsym = Nfft + Ng;% Symbolduration
签证中心= Nfft / 4;%签证中心= 0:noVC(虚拟运营商)
新加坡国立大学= Nfft-Nvc;
EbN0 = [0:5:30];% EbN0
N_iter = 1 e5;为每个EbN0 %的迭代次数
Nframe = 3;%符号每帧的数量
sigPow = 0;%初始化信号功率
file_name = [“OFDM_BER_”chType“_”nt“_”GL”num2str (Ng)“.dat”];
fid = fopen (file_name,“w +”);
规范= [1 sqrt (2) 0 sqrt (10) 0 sqrt (42)];% BPSK 4-QAM 16-QAM
我= 0:长度(EbN0)
rng (0,“v5uniform”);rng (0,“v5normal”);
Ber2 =误码率();% 1初始化
内= 0;“挪威通讯社”星期六报导= 0;%初始化错误的数量/总碎片
m = 1: N_iter
% Tx__________________________________________________________________
X =兰迪(1、新加坡国立大学* Nframe M);%:整数向量
Xmod = qammod (X, M, 0,“灰色”)/规范(平衡);
如果Ngtype ~ = 2, x_GI = 0 (1, Nframe * Nsym + Ng);
% Ng零扩展一个OFDM符号
结束
kk1 =(1:新加坡国立大学/ 2);kk2 =(新加坡国立大学/ 2 + 1:新加坡国立大学);kk3 = 1: Nfft; kk4 = 1: Nsym;
k = 1: Nframe
如果签证中心~ = 0,X_shift = [0 Xmod (kk2) 0 (1, Nvc-1) Xmod (kk1)];
其他的
X_shift = [Xmod (kk2) Xmod (kk1)];
结束
x =传输线(X_shift);
x_GI (kk4) = guard_interval (Ng, Nfft NgType x);
kk1 = kk1 +新加坡国立大学;kk2 = kk2 +新加坡国立大学;kk3 = kk3 + Nfft;kk4 = kk4 + Nsym;
结束
如果Ch = = 0, y = x_GI;%没有通道
其他的%多路径衰落
频道= (randn (Ntap) + j * randn (Ntap))。* sqrt(功率/ 2);
h = 0(1、华尔街日报);h(延迟+ 1)=通道;% cir: channelimpulse响应
y = conv (x_GI h);
结束
如果1我= = 0%只测量信号功率添加AWGN噪声
日元= y (1: Nframe * Nsym);sigPow = sigPow + y1 * ';继续;
结束
%添加AWGN noise________________________________________________
信噪比= EbN0(我)+ 10 *(平衡*(新加坡国立大学/ Nfft));%信噪比与Eb / N0 Eq。(4.28)
noise_mag =√(10 ^(信噪比/ 10))* sigPow / 2);
y_GI = y + noise_mag * (randn(大小(y)) + 1 j * randn(大小(y)));
% Rx________________________________________________________________________
Ng kk1 = (NgType = = 2) * + (1: Nsym);kk2 = 1: Nfft;
kk3 = 1:新加坡国立大学;kk4 =新加坡国立大学/ 2 +签证中心+ 1:Nfft;kk5(签证中心~ = 0)+(1:新加坡国立大学/ 2);
如果Ch = = 1
H = fft ([H 0 (1, Nfft-Lch)]);%信道频率响应
H_shift (kk3) = (H (kk4) H (kk5));
结束
k = 1: Nframe
Y (kk2) = fft (remove_GI (Ng, Nsym、NgType y_GI (kk1)));
Y_shift = [Y (kk4) Y (kk5)];
如果Ch = = 0, Xmod_r (kk3) = Y_shift;
其他的
Xmod_r (kk3) = Y_shift. / H_shift;% Equaliser-channel补偿
结束
kk1 = kk1 + Nsym;kk2 = kk2 + Nfft;kk3 = kk3 +新加坡国立大学;kk4 = kk4 + Nfft;kk5 = kk5 + Nfft;
结束
X_r = qammod (Xmod_r *规范(平衡),M,“灰色”);
内=内+笔(金额(de2bi (X_r平衡)~ = de2bi (X,所以)));
“挪威通讯社”星期六报导=“挪威通讯社”星期六报导+新加坡国立大学* NFrame *平衡;%[在内布拉斯加州的方方面面,“挪威通讯社”星期六报导]=误码率(bit_Rx,一点,平衡);
如果内> Target_neb,打破;结束
结束
如果1我= = 0,sigPow = sigPow / Nsym / Nframe / N_iter;
其他的
数量=内/“挪威通讯社”星期六报导;
流(' EbN0 = % 3 d (db),数量= % 4 d / % 8 d = % 11.3 e \ n”在内布拉斯加州,EbN0(我),“挪威通讯社”星期六报导,方方面面
流(fid检测器,' % d \ t % 11.3 e \ n 'EbN0(我),Ber);
如果误码率< 1 e6,打破;结束
结束
结束
如果(fid ~ = 0),文件关闭(fid);结束
plot_ber (file_name平衡);
3评论
小船
小船 2018年7月11日
编辑:小船 2018年7月11日
首先,你必须改变Ber2 = Ber ()。第二,必须使用例程GI,误码率(计划4.3)为他们initilatization所有例程必须在同一个文件夹ofdm-basic.m(如。,remove_GI.m guard_interval.m plot_ber.m、function_ber.m function_Q.m)。我所有学分去聪明的同事。

登录置评。

答案(3)



尼科
尼科 2023年5月19日13:04
我认为randi-parameters是错误的。
在原始代码
X = randint(1、新加坡国立大学* Nframe M);%:整数向量
应该是喜欢
X =兰迪([0 m - 1]新加坡国立大学* Nframe, 1);%:整数向量
在最近的Matlab。
我得到的阴谋,但模拟严重偏离了分析结果与配置上面的代码一样。有人得到更满意的结果吗?

类别

找到更多的在传播和信道模型帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!