求助,改了好久改不过来
<P>s=; % m序列1初始化值<BR>b=; % m序列2初始化值<BR>%function bm = subsindex(s)<BR>for i=1:p<BR> al=bm(s(2),s(11),0,0,0,0,0,0);<BR><FONT color=#f73809><STRONG>s(2),s(11)可以为s的第2与第11个元素啊<BR></STRONG></FONT><FONT color=#000000>为什么报错<BR>??? Subscript indices must either be real positive integers or logicals.</FONT></P><P><FONT color=#000000>Error in ==> squense1 at 16<BR> al=bm(s(2),s(11),0,0,0,0,0,0);</FONT></P>
回复:(lai5011)求助,改了好久改不过来
<DIV class=quote><B>以下是引用<I>lai5011</I>在2006-4-12 12:11:24的发言:</B><BR><P>s=; % m序列1初始化值<BR>b=; % m序列2初始化值<BR>%function bm = subsindex(s)<BR>for i=1:p<BR> al=<FONT color=#ff0000>bm</FONT>(s(2),s(11),0,0,0,0,0,0);<BR><FONT color=#f73809><STRONG>s(2),s(11)可以为s的第2与第11个元素啊<BR></STRONG></FONT><FONT color=#000000>为什么报错<BR>??? Subscript indices must either be real positive integers or logicals.</FONT></P>
<P><FONT color=#000000>Error in ==> squense1 at 16<BR> al=bm(s(2),s(11),0,0,0,0,0,0);</FONT></P></DIV>
<P>你这里的bm是什么东西啊</P> <P>你上面的bm=subsindex(s)又有什么用呢?<BR>那你下面为什么不直接用subsindex代替bm呢,这样不是绕路走么?<BR>再说,好象subsindex不能有太多的输入吧。<BR>你的错误报的是下标等要么是正整数或者逻辑值吧。<BR>不晓得究竟错在哪里,你要不全部拿来,好让看下全部运行后的错误。</P> <P>1、bm是一函数,另一m文件<br>2、%function bm = subsindex(s)<br>这条语句不要,隐掉<br><br>% 用matlab构建直接序列扩频通信系统,pn码用gold码,m序列用11级斐波纳契结构(SSRG)移位寄存器实现<br>% 通过加入加性高斯白噪声来判定系统性能,得出不同信噪比情况下的误码率<br>% 程序结构:gold码产生-》传送数据产生-》扩频-》加入噪声-》解扩-》样本求和、信息判决-》误码率记数<br>function=squense(N,s,p)<br>clear all<br>global bm<br>Lc=input('please input the value of Lc:'); % 每一信息比特的码片数目,即处理增益<br>N=input('please input the value of N:'); % 传送的信息比特数目<br>g=input('please input the value of g:'); % 是否要加高斯噪声<br>p=2047; % 扩频序列长度<br>n=11; % 序列级数<br>s=; % m序列1初始化值<br>b=; % m序列2初始化值<br>%function bm = subsindex(s)<br>for i=1:p<br> al1=bm(s(2),s(11),0,0,0,0,0,0);<br> for j=n:-1:2<br> s(j)=s(j-1)<br> end<br> s(1)=al1;<br> l1(i)=s(n); % m序列1<br>end<br>for i=1:p<br> al2=bm(b(2),b(3),b(8),b(11),0,0,0,0);<br> for j=n:-1:2<br> b(j)=b(j-1)<br> end<br> b(1)=al2;<br> l2(i)=b(n); % m序列2<br>end<br></P>
<P><br>l3=xor(l1,l2); % 生成gold码序列l33(i)<br>for i=1:p<br> if (l3(i)>0);<br> l33(i)=-1;<br> else l33(i)=1;<br> end<br>end <br> <br>k=cell(N*Lc/p)-1;<br><br>for i=0:k<br> for j=1:p<br> l4(j-p*i)=l33(j); % 多个gold码序列<br> end<br>end<br><br>sgma=1<br><br>for SNRindb=1:30<br> snr=10^(SNRindb/10); % 单位转换db-》一般<br> Eb=2*sgma^2*snr; % 信号能量<br> E_chip=Eb/Lc; % 每码片的信号能量<br> num_of_err=0; % 误码率初始值<br><br>for i=0:N-1 % 产生均匀分布的数据信号<br> temp=rand;<br> if (temp<0.5)<br> data=-1;<br> else <br> data=1;<br> end<br> for j=1:Lc % 数据重复lc次<br> Tb_data(j)=data;<br> PN(j)=l4(j-i*Lc);<br> end<br> Tx_data=sqrt(E_chip)*Tb_data.*PN; % 扩频<br> <br> noise=g*sgma*randn(1,Lc); % 产生加性高斯白噪声<br> %h=(i*Lc-1):(i-1)*Lc;<br> <br> Rx_data=Tx_data+noise; % 加入高斯白噪声<br> plot(Rx_data)<br> keyboard<br> <br> <br> temp=Rx_data.*PN; % 解扩<br> decision_variable=sum(temp); % 样本求和<br> if(decision_variable<0) % 输出判决<br> decision=-1;<br> else<br> decision=1;<br> end<br> if(decision~=data)<br> num_of_err= num_of_err+1; % 误码率记数<br> else<br> num_of_err=num_of_err;<br> end<br>end<br>Err(SNRindb)=num_of_err/N; % 单位数据误码率<br>double(err);<br>keyboard;<br>end<br>subplot(2,1,2);<br>Xlim();<br>Ylim();<br>Err<br>plot(err);</P>
<P>%存成另一文件bm.m<br>function=bm(x,y,z,h,r,t,p,q) % m序列生成算法<br>add=x+y+z+h+r+t+p+q;<br>if(add==0|add==2|add==4|add==6|add==8)<br> add=0;<br>else add=1;<br>end<br></P>
[此贴子已经被作者于2006-4-14 10:41:39编辑过]
回复:(lai5011)1、bm是一函数,另一m文件2、%funct...
<DIV class=quote><B>以下是引用<I>lai5011</I>在2006-4-13 17:57:56的发言:</B><BR><P>1、bm是一函数,另一m文件<BR>2、%function bm = subsindex(s)<BR>这条语句不要,隐掉<BR><BR>% 用matlab构建直接序列扩频通信系统,pn码用gold码,m序列用11级斐波纳契结构(SSRG)移位寄存器实现<BR>% 通过加入加性高斯白噪声来判定系统性能,得出不同信噪比情况下的误码率<BR>% 程序结构:gold码产生-》传送数据产生-》扩频-》加入噪声-》解扩-》样本求和、信息判决-》误码率记数<BR>function=squense(N,S,s,p,<FONT color=#ff0000>bm</FONT>)<BR>clear all<BR><FONT color=#ff0000>global bm</FONT><BR></P></DIV>
<P>既然bm是函数,你在红色标记部分又把它作为变量使用,明显就错了</P>
我改了下,问题还没解决,同样的错误,各位大哥,看看还错在哪里
其中:<BR>l1是变化的量,会随al1变化,l2随al2,<BR>al1、al2随s(i)变化回复:(lai5011)求助,改了好久改不过来
见5楼 他可能想知道错了怎么改吧,偶不会..问题还没解决,
谢谢各位,不过问题还没解决<BR>各路好手能不能全看看,<BR>看有没有其他定义上的错误回复:(lai5011)问题还没解决,
<DIV class=quote><B>以下是引用<I>lai5011</I>在2006-4-14 11:10:10的发言:</B><BR>谢谢各位,不过问题还没解决<BR>各路好手能不能全看看,<BR>看有没有其他定义上的错误</DIV><br>自己调吧,别人没那么多功夫,有问题再问
有点急了,无奈,只好求助
改了好多地方,没有效果<BR>还是知识太浅了<BR>不知道看哪方面的细节知识更有效<BR>希望各位好手帮我指出程序中的错误<BR>并说说看哪方面的知识有助于编程调测<BR>谢谢回复:(lai5011)求助,改了好久改不过来
<P>把global bm去掉,四楼不是说过了嘛</P>[此贴子已经被作者于2006-4-17 21:41:35编辑过]
谢谢了
<P><BR>是我理解错了<BR><BR>现在结果接近理想了<BR><BR></P>
页:
[1]