matlab Error in ==> Untitled3 at 4 ich3=[ich2(para-gl+1:para,:);ich2]; 真的是要疯了 到底哪里错了呀
答案:1 悬赏:50
解决时间 2021-02-15 22:23
- 提问者网友:冷场帝
- 2021-02-15 13:13
matlab Error in ==> Untitled3 at 4 ich3=[ich2(para-gl+1:para,:);ich2]; 真的是要疯了 到底哪里错了呀
最佳答案
- 二级知识专家网友:错过的是遗憾
- 2021-02-15 13:49
你这里面错误好多,应该根据程序的提示好好检查一下。
clear;
clc;
SNR=10; %信噪比
fl=128; %设置FFT长度
Ns=6; %设置一个祯结构中OFDM信号的个数
para=128; %设置并行传输的子载波个数
sr=250000; %符号速率
br=sr.*2; %每个子载波的比特率
gl=32; %保护时隙的长度
nloop=1; %仿真循环次数
noe=0; %误码数
nod=0; %传输的数据数量
eop=0; %误组数
nop=0; %传输的分组数
for iii=1:nloop
end
%-------------产生数据------------
Signal=round(rand(1,para*Ns*2))>0.5; %产生0,1随即序列,符号数为para*Ns*2,Signal实际得到的%是右边逻辑表达式的结果,rand产生的值如果大于0.5,则Signal为1,如果小于0.5,则Signal为0
%------------串并转换---------
for i=1:fl
for j=1:Ns*2
ParaBitSig(i,j)=Signal(i*j);
end
end
%------------QPSK调制--------
for j=1:Ns
ich(:,j)=ParaBitSig(:,2*j-1);
qch(:,j)=ParaBitSig(:,2*j);
end
kmod=1./sqrt(2);
ich0=ich.*2-1;
qch0=qch.*2-1;
ich1=ich0.*kmod;
qch1=qch0.*kmod;
qpsk_x=ich1+qch1.*sqrt(-1); %频域数据变时域
%---------------IFFT------------
fy=ifft(qpsk_x);
ich2=real(fy);
qch2=imag(fy);
%--------------插入保护间隔------------
ich3=[ich2(para-gl+1:para,:);ich2];
qch3=[qch2(para-gl +1:para,:);qch2];
%--------------计算衰减--------------
spow=sum(ich3.^2+qch3.^2)/Ns./para;
attn=0.5*spow*sr/br*10.^(-SNR/10);
attn=sqrt(attn);
%并串变换
ich4=reshape(ich3,1,(fl+gl)*Ns);
qch4=reshape(qch3,1,(fl+gl)*Ns);
%形成复数发射数据
TrData=ich4+qch4.*sqrt(-1);
%接收机
%----------加入高斯白噪声-----------
ReData=awgn(TrData,SNR,'measured');
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,fl+gl,Ns);
qdata1=reshape(qdata,fl+gl,Ns);
idata2=idata1(gl+1:gl+fl,:);
qdata2=qdata1(gl+1:gl+fl,:);
Rex=idata2+qdata2.*sqrt(-1);
ry=fft(Rex);
ReIChan=real(ry);
ReQChan=imag(ry);
ReIchan1=ReIChan/kmod;
ReQchan1=ReQChan/kmod;
ReIChan0=(ReIchan1+1)/2;
ReQChan0=(ReQchan1+1)/2;
for j=1:Ns
Repara(:,2*j-1)=ReIChan0(:,j);
Repara(:,2*j)=ReQChan(:,j);
end
ReSig=reshape(Repara,1,para*Ns*2);
ReSig=ReSig>0.5;
clear;
clc;
SNR=10; %信噪比
fl=128; %设置FFT长度
Ns=6; %设置一个祯结构中OFDM信号的个数
para=128; %设置并行传输的子载波个数
sr=250000; %符号速率
br=sr.*2; %每个子载波的比特率
gl=32; %保护时隙的长度
nloop=1; %仿真循环次数
noe=0; %误码数
nod=0; %传输的数据数量
eop=0; %误组数
nop=0; %传输的分组数
for iii=1:nloop
end
%-------------产生数据------------
Signal=round(rand(1,para*Ns*2))>0.5; %产生0,1随即序列,符号数为para*Ns*2,Signal实际得到的%是右边逻辑表达式的结果,rand产生的值如果大于0.5,则Signal为1,如果小于0.5,则Signal为0
%------------串并转换---------
for i=1:fl
for j=1:Ns*2
ParaBitSig(i,j)=Signal(i*j);
end
end
%------------QPSK调制--------
for j=1:Ns
ich(:,j)=ParaBitSig(:,2*j-1);
qch(:,j)=ParaBitSig(:,2*j);
end
kmod=1./sqrt(2);
ich0=ich.*2-1;
qch0=qch.*2-1;
ich1=ich0.*kmod;
qch1=qch0.*kmod;
qpsk_x=ich1+qch1.*sqrt(-1); %频域数据变时域
%---------------IFFT------------
fy=ifft(qpsk_x);
ich2=real(fy);
qch2=imag(fy);
%--------------插入保护间隔------------
ich3=[ich2(para-gl+1:para,:);ich2];
qch3=[qch2(para-gl +1:para,:);qch2];
%--------------计算衰减--------------
spow=sum(ich3.^2+qch3.^2)/Ns./para;
attn=0.5*spow*sr/br*10.^(-SNR/10);
attn=sqrt(attn);
%并串变换
ich4=reshape(ich3,1,(fl+gl)*Ns);
qch4=reshape(qch3,1,(fl+gl)*Ns);
%形成复数发射数据
TrData=ich4+qch4.*sqrt(-1);
%接收机
%----------加入高斯白噪声-----------
ReData=awgn(TrData,SNR,'measured');
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,fl+gl,Ns);
qdata1=reshape(qdata,fl+gl,Ns);
idata2=idata1(gl+1:gl+fl,:);
qdata2=qdata1(gl+1:gl+fl,:);
Rex=idata2+qdata2.*sqrt(-1);
ry=fft(Rex);
ReIChan=real(ry);
ReQChan=imag(ry);
ReIchan1=ReIChan/kmod;
ReQchan1=ReQChan/kmod;
ReIChan0=(ReIchan1+1)/2;
ReQChan0=(ReQchan1+1)/2;
for j=1:Ns
Repara(:,2*j-1)=ReIChan0(:,j);
Repara(:,2*j)=ReQChan(:,j);
end
ReSig=reshape(Repara,1,para*Ns*2);
ReSig=ReSig>0.5;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯