Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-03-03
年龄: 39
帖子: 2
声望力: 0 ![]() |
![]()
小弟要完成毕业论文,可这个东西是在是不会
哪位高手能帮忙看看这个程序到底有些什么错误啊? 我是输几条命令就报错,前面的还能凑合着改掉,现在干脆卡住了…… ![]() %File_C9:TD_Phy.m %本程序仿真单用户 %TD_SCDMA的调制解调过程,使用QSPK调制,扩频因子Q=4,使用第3号码分信道,第9号扰码 clear; clc; format compact; %可调变量 SNR=15; ovsf=[+j-j+j-j]; scram(1:16)=[j,-1,j,1,j,-1,-j,-1,j,-1,-j,-1,-j,1,-j,-1]; Len_PN=length(ovsf); Len_Data=16; Len_Chip=Len_PN*Len_Data; Fc=1.28e+6; T_Chip=1.0e-6/1.28; %信源序列 Signal=randint(1,Len_Data); qpsk=zeros(1,Len_Data/2); for i=1:Len_Data/2; if Signal(2*i-1)<0.5 && Signal(2*i)<0.5 qpsk(i)=j; elseif Signal(2*i-1)<0.5 && Signal(2*i)>0.5 qpsk(i)=1; elseif Signal(2*i-1)>0.5 && Signal(2*i)<0.5 qpsk(i)=-1; else qpsk(i)=-j; end end SigSpr=kron(qpsk,ovsf); %加扰码 N=length(SigSpr)/length(scram); for i=1:N-1; scram(16*i+1:16*i+16)=scram(1:16); end SigSprScrab=SigSpr.*scram (到这报错??? Error using ==> times Matrix dimensions must agree.之后我就再没往下做) %figure(1) %bubplot(211),stem(real(SigSprScrab)),grid;subplot(212),stem(imag(SigSprScrab)),grid Nch=length(SigSprScrab); %%经过脉冲成型滤波器 Delay=8; R=0.22; Fs=4*Fc I_TrSig=rcosflt(real(SigSprScrab),Fc,Fs,'fir/sqrt',R,Delay); Q_TrSig=rcosflt(imag(SigSprScrab),Fc,Fs,'fir/sqrt',R,Delay); %%%%复发射信号经过加性高斯白噪声信道 RecSig=awgn(I_TrSig+j*Q_TrSig,SNR,'measured'); %%%%经过接收端的低通滤波器 I_ReSig=rcosflt(real(RecSig),Fc,Fs,'fir/sqrt/fs',R,Delay); Q_ReSig=rcosflt(imag(RecSig),Fc,Fs,'fir/sqrt/fs',R,Delay); %%抽样 for j=1:Nch D_Isample(j)=I_ReSig(65+(j-1)*4); D_Qsample(j)=Q_ReSig(65+(j-1)*4); end data=D_Isample+sqrt(-1)*D_Qsample; %解扰 De_scram=data.*conj(scram); %%%%解扩 for i=1:Len_Data/2 De_spr(Len_PN*(i-1)+1:Len_PN*i)=De_scram(Len_PN*(i-1)+1:Len_PN*i).*conj(ovsf); end %%%%解相关 for k=1:Len_Data/2 Rec_Data(k)=0; for i=1:Len_PN Rec_Data(k)=Rec_Data(k)+De_spr((k-1)*Len_PN+i)/Len_PN; end end bb=zeros(1,Len_Data); %QPSK逆映射与判决 for j=1:Len_Data/2 for k=1:4 test(k)=abs(Rec_Data(j)-(sqrt(-1))^k); end test_result=min(test); if test_result==test(1) bb(2*j-1)=0; bb(2*j)=0; elseif test_result==test(2) bb(2*j-1)=1; bb(2*j)=0; elseif test_result==test(3) bb(2*j-1)=1; bb(2*j)=1; elseif test_result==test(4) bb(2*j-1)=0; bb(2*j)=1; end end figure(1) subplot(211),stem(bb),grid;subplot(212),stem(Signal),grid figure(2) m=length(I_ReSig) xt=repmat([1:16],1,(m-64)/16); plot(xt,I_ReSig(65:m)); %程序结束 |
![]() |
![]() |