lai5011 发表于 2006-4-12 12:11

求助,改了好久改不过来

<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 ==&gt; squense1 at 16<BR>    al=bm(s(2),s(11),0,0,0,0,0,0);</FONT></P>

happy 发表于 2006-4-12 15:47

回复:(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 ==&gt; squense1 at 16<BR>    al=bm(s(2),s(11),0,0,0,0,0,0);</FONT></P></DIV>
<P>你这里的bm是什么东西啊</P>

cdwxg 发表于 2006-4-12 23:55

<P>你上面的bm=subsindex(s)又有什么用呢?<BR>那你下面为什么不直接用subsindex代替bm呢,这样不是绕路走么?<BR>再说,好象subsindex不能有太多的输入吧。<BR>你的错误报的是下标等要么是正整数或者逻辑值吧。<BR>不晓得究竟错在哪里,你要不全部拿来,好让看下全部运行后的错误。</P>

lai5011 发表于 2006-4-13 17:57

<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)&gt;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&lt;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&lt;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编辑过]

AaronSpark 发表于 2006-4-13 23:06

回复:(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>

lai5011 发表于 2006-4-14 10:55

我改了下,问题还没解决,同样的错误,各位大哥,看看还错在哪里

其中:<BR>l1是变化的量,会随al1变化,l2随al2,<BR>al1、al2随s(i)变化

happy 发表于 2006-4-14 10:57

回复:(lai5011)求助,改了好久改不过来

见5楼

cdwxg 发表于 2006-4-14 11:00

他可能想知道错了怎么改吧,偶不会..

lai5011 发表于 2006-4-14 11:10

问题还没解决,

谢谢各位,不过问题还没解决<BR>各路好手能不能全看看,<BR>看有没有其他定义上的错误

happy 发表于 2006-4-14 11:54

回复:(lai5011)问题还没解决,

<DIV class=quote><B>以下是引用<I>lai5011</I>在2006-4-14 11:10:10的发言:</B><BR>谢谢各位,不过问题还没解决<BR>各路好手能不能全看看,<BR>看有没有其他定义上的错误</DIV>
<br>自己调吧,别人没那么多功夫,有问题再问

lai5011 发表于 2006-4-17 21:19

有点急了,无奈,只好求助

改了好多地方,没有效果<BR>还是知识太浅了<BR>不知道看哪方面的细节知识更有效<BR>希望各位好手帮我指出程序中的错误<BR>并说说看哪方面的知识有助于编程调测<BR>谢谢

happy 发表于 2006-4-17 21:39

回复:(lai5011)求助,改了好久改不过来

<P>把global bm去掉,四楼不是说过了嘛</P>
[此贴子已经被作者于2006-4-17 21:41:35编辑过]

lai5011 发表于 2006-4-18 11:25

谢谢了

<P><BR>是我理解错了<BR><BR>现在结果接近理想了<BR><BR></P>
页: [1]
查看完整版本: 求助,改了好久改不过来