他的影子 发表于 2008-5-7 16:34

Subscript indices must either be real positive integers or logicals出错求助

在坛子里也看到了一个类似的帖子,但和我的不大一样

我是初学者,也是照猫画虎,只是想画几个图而已,但是调试了好多次都出问题。现给出程序
clear;
a=0.552;
d(1)=0.8000;
d(2)=0.7250;
b(1)=0.7600;
b(2)=0.4185;
c(1)=0.1880;
k=0.8848;
da=0.0001;

Na=size(da);%range of basion
Na=Na(2);
T=1000;% time steps
for i=1:Na
   %generate the time series
   L=zeros(1,T);
   M=zeros(1,T);
   N=zeros(1,T);
   L(1)=0.6;% initial values
   M(1)=0.4;
   N(1)=0.5;
   c2=0.0+i*da;
   for t=1:T%以下为方程
         L(t+1)=b(1)*M(t)-d(1)*L(t)-k(L(t)+M(t))*L(t)-c(1)*L(t)*N(t)+L(t);
         M(t+1)=(b(2)-d(2))*M(t)-k(L(t)+M(t))*M(t)-c(1)*M(t)*N(t)+M(t);
         N(t+1)=N(t)*(-a-b(2)*N(t)+c2*L(t))+N(t);   
   end;
   H=L(T/2+1:T);
   hold on
   plot(c2,H(T/2-200:T/2),'k.','markersize',4);
    i;
end
xlabel('c2');
ylabel('L');

运行,提示是??? Subscript indices must either be real positive integers or logicals.

看之前那帖子,大大说是下标不为正整数就会出现这问题。但我怎么也找不到。。。人比较笨,又是新手,请多帮忙,谢谢!



我在继续修改,谢谢大家!

[ 本帖最后由 他的影子 于 2008-5-7 16:53 编辑 ]

eight 发表于 2008-5-7 16:37

原帖由 他的影子 于 2008-5-7 16:34 发表 http://www.chinavib.com/forum/images/common/back.gif
在坛子里也看到了一个类似的帖子,但和我的不大一样

我是初学者,也是照猫画虎,只是想画几个图而已,但是调试了好多次都出问题。现给出程序

clear;
d(1)=0.8000;
d(2)=0.7250;
b(1)=0.7600;
b(2)=0.4185; ... 置顶帖找答案,这些常见错误我们都整理了,别当它们是摆设

他的影子 发表于 2008-5-7 16:39

谢谢,刚来对规矩不是很了解,请见谅

再次感谢eight大的处理速度。我去看置顶,再有问题会在这里跟帖求教

由于论文赶的比较急所以方法欠妥,不好意思。

wwbeyondww 发表于 2008-5-7 16:42

L(t+1)=b(1)*M-d(1)*L-k(L+M)*L-c1LN+L(t);
M(t+1)=(b(2)-d(2))*M-k(L+M)*M-c(1)*M*N+M(t);


其中的k(L+M)是啥意思?
很莫名其妙

他的影子 发表于 2008-5-7 16:48

确实有点不大合适。我正在修改。谢谢大家!L和M那个应该是L(t)和M(t)

类似的错误也有几处,我修改掉再看看

主要这个错误不止是这一个模型,我还试验了其他几个方程都是类似错误,才迫不得已求教的。

见谅

[ 本帖最后由 eight 于 2008-5-7 17:07 编辑 ]

wwbeyondww 发表于 2008-5-7 16:59

回复 5楼 的帖子

k和L和M之间的关系呢?
错误提示其实就是这个,把L和M当成k的index了

3QMM 发表于 2008-5-7 17:14

程序中
1:da=0.001;
       Na=size(da);
         Na=Na(2);
这就规定了Na等于1,就不用循环了吧!
2:你已经定义了L,M,N是1*1000的行证,然后你后面的循环t=1:1000
      那到最后一步应该会超出索引吧
3:还有就是楼上的说得,不能把L,M的值当成INDEX,它们的初值本来就是小数不是整数。
不知道对不对。

[ 本帖最后由 eight 于 2008-5-7 18:23 编辑 ]

他的影子 发表于 2008-5-7 17:55

L、M和K那个修改,然后运行可以出图了

L,M,N是1*1000的行证,然后后面的循环t=1:1000那个,没有报错。我是新手也不是很明白其中道理。。。

Na=size(da),这句其实我不是很懂的,我们老师还给过一个程序,直接设置的Na=200

无论如何,谢谢楼上的朋友们!

eight 发表于 2008-5-7 18:29

原帖由 他的影子 于 2008-5-7 17:55 发表 http://www.chinavib.com/forum/images/common/back.gif
L、M和K那个修改,然后运行可以出图了

L,M,N是1*1000的行证,然后后面的循环t=1:1000那个,没有报错。我是新手也不是很明白其中道理。。。

Na=size(da),这句其实我不是很懂的,我们老师还给过一个程序,直接 ... 不懂的地方自己多动手试试,没有人一上手就能掌握,都是摸索出来的,不断help、不断用小程序测试

他的影子 发表于 2008-5-8 00:16

收到了。谢谢8大。。。

现在还在继续画图,机子速度被拖的不成样子了。但真的很谢谢大家。希望明天交稿后天答辩以及后面拿学位都能顺利~

再次谢谢大家!尤其是 wwbeyondww 兄,给了我很多提示,谢谢!

只可惜不能把感谢写在论文里。。。:@L

eight 发表于 2008-5-8 11:36

原帖由 他的影子 于 2008-5-8 00:16 发表 http://www.chinavib.com/forum/images/common/back.gif
收到了。谢谢8大。。。

现在还在继续画图,机子速度被拖的不成样子了。但真的很谢谢大家。希望明天交稿后天答辩以及后面拿学位都能顺利~

再次谢谢大家!尤其是 wwbeyondww 兄,给了我很多提示,谢谢!

只可 ... 感谢可以写在毕业论文的致谢中啊

ch_j1985 发表于 2008-5-8 12:02

原帖由 eight 于 2008-5-8 11:36 发表 http://www.chinavib.com/forum/images/common/back.gif
感谢可以写在毕业论文的致谢中啊

呵呵,致谢中是写振动论坛呢?还是写eight院长?或是其他?

binhaihuangjrh 发表于 2008-5-8 12:42

回复 12楼 的帖子

不错, 想法很好, 一针见血。:lol

eight 发表于 2008-5-8 12:57

原帖由 ch_j1985 于 2008-5-8 12:02 发表 http://www.chinavib.com/forum/images/common/back.gif
呵呵,致谢中是写振动论坛呢?还是写eight院长?或是其他? 当然是振动论坛啦
页: [1]
查看完整版本: Subscript indices must either be real positive integers or logicals出错求助