sssssxxxxx921 发表于 2007-7-24 16:28

Subscript indices must either be real positive integers or logicals

在用matlab运行程序时出现这个错误,请问这是什么意思?
有人说这是因为引用数组元素用的下标为0造成的,可我没引用数组0下标啊
源程序中出错的地方提示是下面的第一行
dq(9:16,1)=[-1/m1*((Cx11+Cx12)*q(9,1)+Fx11+Fx12-(W1+Fx21+Cx21*q(13,1)));
         -1/m1*((Cy11+Cy12)*q(10,1)+Fy11+Fy12-(Fy21+Cy21*q(14,1)));
         1/Jx1(Jz1*2*pi*w1*q(12,1)-Mx1);
         -1/Jy1(Jz1*2*pi*w1*q(11,1)-My1);
          -1/m2*((Cx21+Cx22)*q(13,1)+Fx21+Fx22-(P+W2));
         -1/m2*((Cy21+Cy22)*q(14,1)+Fy21+Fy22);
         1/Jx2(Jz2*2*pi*w2*q(16,1)-Mx2);
         -1/Jy2(Jz2*2*pi*w2*q(15,1)-My2)];
dq(1:8,1)=q(9:16,1);
错误时:Subscript indices must either be real positive integers or logicals.
Error in ==> D:\CD1\work\TwoRotors_System_Sub_Func.m
On line 101==> dq(9:16,1)=[-1/m1*((Cx11+Cx12)*q(9,1)+Fx11+Fx12-(W1+Fx21+Cx21*q(13,1)));
Error in ==> D:\CD1\toolbox\matlab\funfun\private\odearguments.m
On line 104==> f0 = feval(ode,t0,y0,args{:});
Error in ==> D:\CD1\toolbox\matlab\funfun\ode23tb.m
On line 183==>
Error in ==> D:\CD1\work\TwoRotors_System_Func.m
On line 45==>    =ode23tb('TwoRotors_System_Sub_Func',t_span,q_initial);

请教大牛

eight 发表于 2007-7-24 16:30

原帖由 sssssxxxxx921 于 2007-7-24 16:28 发表 http://www.chinavib.com/forum/images/common/back.gif
在用matlab运行程序时出现这个错误,请问这是什么意思?
有人说这是因为引用数组元素用的下标为0造成的,可我没引用数组0下标啊
源程序中出错的地方提示是下面的第一行
dq(9:16,1)=[-1/m1*((Cx11+Cx12)*q(9, ...

看这个:常见的程序出错问题整理

自己仔细调试一下,看哪个变量引用出问题了

sssssxxxxx921 发表于 2007-7-25 16:38

按照你那说法这辈子也检查不出来,就不是因为矩阵下标问题,
下面我以一个普通的论坛会员来说一下自己的感受:
首先我来这个板块发帖是因为 我在编程遇到了困难而且很多时候是因为看了半天也没有看出来,这其中很多时候是因为进入了思维定势并不是我懒的看把调试的过程想交给别人
其次我遇到了困难是来求人指点的哪怕你之说可能是什么原因(例如矩阵下标)你再仔细看看   我会很感谢你的   但我很讨厌也很烦 那些装大腕的人说什么找本MATLAB的书先看看再说,或者看什么常见错误整理因为对于编程和其他板块还不一样,各人的错误是不一样的 机子报错也是不一样的再说别人肯定也是检查过半天才 来这的   谁也不会轻易把问题料给别人的   
第三    我觉的自己来这也并不是要求别人给把问题解决了只是寻求一点思路, 有时是别人不经意的一句话(也许并不正确 或者说错误的)   就会使我思绪豁然开朗
上面所说的话也许比较偏激   但我想这很代表来这里寻求帮助的同志们的心声
真心希望本论坛越办越好,当然对于本版块对于大部分工、理科的学生都会遇到问题,完全有理由也更有机会比别的版块办的更好
不敬之处望海涵

rocwoods 发表于 2007-7-25 17:38

数据不提供,大家怎么帮你找错误?难道让大家去猜测你的数据?
说实话,振动论坛的版主差不多算是几大MATLAB论坛里最热心最活跃的了。楼主应该替版主想想,一天到晚重复做着很多同样的事,面对很多无法回答的帖子,只能是让会员先去看看置顶帖,学会如何提问题,如何能够让大家帮你做。

sssssxxxxx921 发表于 2007-7-25 18:14

回复 #4 rocwoods 的帖子

也许是活跃的板块   但我个人认为这个板块并不是最受欢迎的板块   说的不好听但我是为了这个板块的发展说的看看那些关于问题的帖子的回复都是看书什么的   即使你说得对我想问问题的人也不会太高兴,谁都知道看书什么的   你还不如不说说那有什么用   难道别人不知道看书能解决问题    或者难道 就是因为你要评优秀版主之类的吗

对于第二个问题“数据不提供,大家怎么帮你找错误?难道让大家去猜测你的数据?”   不要为自己找什么理由,难道给了你源代码你就会帮忙看,我记得上次发过一个也没见你说什么建设性意见啊

第三关于你们忙和帖子多的事我就不说什么了我只是想说我自己这几次来的感受 :我在综合其他板块意见运行不出来才抱着治病乱投医   试试看的态度来的   原因在什么地方我不想多说了

第四我想你忙是一回事   受欢迎是另一回事   
最后我想重申:说这些都是为了这个论坛这个板块的发展, 对于我个人 也许在这之后不会来这个板块求助了   不是因为愤恨是我的MATLAB编程的问题已经差不多解决了   以后就是VC再以后就是工作也许就不会接触到这些了
最最后呢
希望这个板块越来越好   :handshake
:victory:

花如月 发表于 2007-7-25 18:37

回复 #5 sssssxxxxx921 的帖子

第一,如果回复让版友看基础书那就一定有道理的,至少说明这个问题在书上是可以找到答案的。以你的意思看书可以解决所有的问题,我们的这个板块就没有存在的必要了。大家的问题都看书解决了,还讨论什么呀?我来这个板块的感受:很多高手写的程序书上是找不到的,都是很精炼的那种,而书上说的都是原理加基础。即使有程序也都是很简单的例子,至少我认为这里的版主都是很负责的,这也是板块受欢迎的主要原因

第二,别人给你提意见都是好心。有责改之,无责加冕。不管是什么原因你的上个问题没有得到满意的答复,也不能因此而怀疑别人的好心。

第三,要相信和培养自己独立解决问题的能力。正如eight版主所言自己仔细调试一下“看哪个变量引用出问题了”。如果这些常见错误都没了,结果还不正常,自然高人给你检查问题。

第四,不管你对这个版区报什么感情,这个版区还会一如既往地欢迎每位版友。积极讨论和交流在学习过程中的遇到问题,并更加受欢迎!每个工具都有自己的优势,能结合利用每个工具的有点才是最重要的。用vc不代表以后就不会用到matlab,工作了也不意味着就永远用不到matlab了。

最后对你的意见表示感谢,祝你顺利!

[ 本帖最后由 eight 于 2007-7-26 14:04 编辑 ]

rocwoods 发表于 2007-7-26 09:53

我强烈建议sssssxxxxx921兄当一段时间版主,有些东西你不身处其中是不能体会的。就拿你给的那段程序来说,变量N多,到底是什么类型的,标量、向量、还是矩阵,等等都没有交待。不知道你是懒得交待还是怎么着,你来这里的目的是免费求大家帮你找错,大家的时间都很宝贵,版主也是人,在这个连方便面都要涨价的时代,牺牲很多时间在网上免费为网友答疑解惑。如果提问题的人都懒得把问题交待清楚,你怎么能指望别人把你没有交待清楚的地方想方设法、连猜带蒙、不择手段、费尽全力也要弄明白呢?
       将来不知道你会不会接触到程序的测试工作,测试用例是多么的重要,你把代码一丢,测试用例不给,背景不交待,怎么让别人帮你找错。别人真的不是神仙,版主不是万能的。你把信息给全了,不能保证每个看到你问题的人都会去帮你想,(别人没有这个义务),但是不给全信息是对真正想帮你考虑的人的一种不尊重,人家都打算牺牲时间帮你考虑了,却苦于心有余而力不足,细想想是不是这个理儿?

eight 发表于 2007-7-26 14:18

原帖由 sssssxxxxx921 于 2007-7-25 18:14 发表 http://www.chinavib.com/forum/images/common/back.gif
也许是活跃的板块   但我个人认为这个板块并不是最受欢迎的板块   说的不好听但我是为了这个板块的发展说的看看那些关于问题的帖子的回复都是看书什么的   即使你说得对我想问问题的人也不会太高兴,谁都知道 ...

我说几句吧:无论别人是否给你答复,是否给你指引,如果你是来求助的,我想至少你需要做到两点:首先要保持良好的心态,然后把你的问题叙述清楚。rocwoods兄说得没有错,如果你有机会当一下领导、版主,你就能亲身感受到作为施恩人的无奈和压力了。如果遇到表述不清的问题,一次半次、一个半个可能你很耐心地回复,让他重新整理好再发上来。但是,我敢肯定的说,自以为是的人居多:自己本身没有提问的智慧,却偏偏喜欢我行我素,一上来就发帖,而且内容也不完整,试问天天这样的话,除非是机器,人的话如何承受得了?我身为版主,已经把各种注意的问题写好,放在置顶区中,但是你们却偏偏视而不见,这能怪谁?就算你按照了要求把问题表述清楚,能够有精力、时间去帮你解答,试问又有多少这样的热心人?要知道,我们做版主的分文不收,每天有很多自己的问题要处理不止,而且很多管理人员都是有工作、有家庭的小伙子,为了生活,个个都东奔西走,疲于奔命,如果每天都花大量时间在一些表述不清的问题上,怎会不过劳死?希望你们求助者好好反省一下,你自己遇到的难题到底我们是否一定有义务去帮你?说实在的,我们也很希望有热心人来帮助我们解决困难、问题,但是,我们都没有把自己的问题放上来论坛上,一来是知道自己的问题应该自己解决,二来是知道别人的时间也很宝贵,所以,记住:自己的问题自己解决,实在解决不到,再上来求助,但是切记你是求助者,请不要浪费别人太多时间,另外请务必注意你的言辞、态度!

appleseed05 发表于 2007-7-26 20:28

我在论坛里潜水也很久了,有些同志确实很不厚道,一上来就要程序的,什么都不编随便找个程序过来就叫别人改或者写的,或者完全自己能解决就是不解决的还是蛮多的。各位斑竹确实很辛苦也很认真。但试想一下每天看着很多这样的帖子,怎么有耐心一遍一遍回答呢。
这样也会造成一种现象,有的同志确实很努力的写程序了(比如楼主),但是表述不清楚,也不完整,自然也没有办法给你详细回答。所以大家要相互体谅,毕竟我们只是交流,不是给人打工。:@)

梅飞色舞 发表于 2007-7-26 21:58

我来这个板块发帖是因为 我在编程遇到了困难而且很多时候是因为看了半天也没有看出来,这其中很多时候是因为进入了思维定势并不是我懒的看把调试的过程想交给别人
----------------------------------------------------------------------------------------------------------------------------------
1.程序应该写一段 随时保存 随时运行 ,没错的情况下再继续写
不要等写到几百行甚至上千行了再找就麻烦了
尽量把程序分细
不要一个函数写到底
2 如何调试也是一门内功 如何运用好工具
学会断点运行 学会通过中间过程结果的分析 找出错误所在
3 多写注释,命名最好见名知意

我想重申:说这些都是为了这个论坛这个板块的发展
其它的我不想多说 其实最让帮助别人的人心寒的是求助者无理由的抱怨 甚至是。。
如果真的有一天,这批人都心灰意冷,都想退出了
。。。。

newface 发表于 2007-7-27 11:04

其实最烦的不是回答问题装大腕儿的,是问问题还想装大腕儿的。
这样没智商的滥问题,直接删贴了事儿!在这儿苦口婆心说什么说?!当东郭?

orchis_2005 发表于 2007-7-27 17:01

有时候漏加或多加括号时也会出现
那种报警错误,我就碰倒过好几次这种情况.
看看能不能排除把.

sssssxxxxx921 发表于 2007-7-28 11:17

有幸看到这么多留言还是说明很多人来这个版块的   我可以理解但每个人人的情绪你可以控制吗,我可以站在你们的立场上说   假如我是版主只要我换一下口气:说我没看了一下没看出来你再看看书吧或者说 可能是下表有问题,见某某帖子    我相信没有人不会感谢我至少不会有怨言   但是我要说:看看Matlab基础再说    见某帖等等你站在一个提问者而且是被问题困扰了多少天的人来说是什么感受
      第二论坛上是有很多人上来就想要程序,但不要把每个人都想成那样,
      第三正如上面的一位所说 也许错误也许很小 ,但对于陷入其境的人来说 就是没看出来,我的意思是说你只需稍看一下,是不是缺符号这种简单错误引起的,是告诉他,不是完全可以说没看出来,你再看看书,或者说你再找找人看看吧。。。至于所说的逻辑错误,那肯定让你改你也并不一定熟悉他的思路啊
   第四 这只是我的个人感受,也许不对   甚至很荒谬,但我只是想说给版主听,就像有人说我应该做斑竹试试,是的,也许应该,我就会体会你们不会那样说了   但所有人都会做过版主再和你说吗?    我在大学曾经也像班中的所有人觉的班长算个什么东西,他的行为总觉有意见,但我也做过一段后   确实感觉不容易,   但并不是所有人做过班长,所有人都会理解你   也许觉的这话不正验证了版主们的观点了吗?    但我想说的我只想我们这个论坛这个版块更好有更多的人喜欢然后推荐给更多的人,    就像做过班长后我觉的没有人能对班长有什么好印象   至少不会是大多数或者全部,   但我在遇到一个另外一个班的班长后    这个观点发生了改变,他和班里几乎所有人关系都很不错,而且老师非常赏识他   老师同学都说他将来在哪个环境发展也会很出色的,我想任何一个做班长的人都应该像他学习(当然他不可能没有缺点),同样作为一个版主我想也应该一样
也许我的标准有点高
   第五我很佩服你们无私的奉献你们的时间但我所说的并不是针对某一个人,我是针对一个现象也许是错误的   但反对的意见都会有的   希望见谅
   第六关于上边的讨论我觉得并没有那么隆重   每个人不是加分就是威望的   听到支持的意见加分加威望说出你的心里话就加个威望   不要小孩子气反对的意见至少代表一部分人   如果你觉的窝火做了义务还受气还不讨好, 你要觉得我说这话的意思是这的话    那你们就随便加分加威望吧    我支持你们
   最后   你们很辛苦   希望你们能得到越来越多人的支持   也希望像我这样 使唤了别人还不讨好的更少或者没有最好   呵呵
   再祝振动论坛越办越好 !

sssssxxxxx921 发表于 2007-7-28 11:23

回复 #6 花如月 的帖子

大致看了一下又看到了你的帖子很好能客观分析及时你也受了我的比较过激的话
但就凭你这句话我想再有意见的人也不会再挑三拣四了   
向你学习:victory:

你做斑竹我永远支持!!!!!!!
祝顺利

花如月 发表于 2007-7-28 12:00

谢谢楼上的支持。我比你早来这个论坛也只早了20天,由于时间比较多而且碰到问题都一般自己尝试去做做看。所以如果是一些简单的问题,我都会直接给出答案(即便是已经讨论过的),正是由于热心这点才有幸做了版主。几天之后,就发现一堆自己没法去解决的问题。所以也只能提些建议或者搜一些相关的链接让他们自己看。(好多问题都比较专业,你的这个就是。程序即使没有语法错误,也不一定会有正确的结果。而有些情况错误是比较常见的,你的这个就是,调试程序的功力确实需要日历越累。)

   我的专业是图像处理,所以如果有图像处理相关的我都会尽力去尝试。因为帮了别人自己也提高了(图像处理方面的我一般都是给出自己做的完整答案 )。这里就是讨论的,所以每个人都一样。别人能给自己的一个完整的解决当然最好,如果没有完整的答案不论别人提的意见是好是坏、可行不可行都是好意。我刚开始的有几个问题也都没有人回答,后来发现是问题太大,没有细化。别人相帮也是心有余而无从着力。

    还是建议多尝试,把问题细化,逐个突破。知道吗?我昨天发一个帖子,系统一直提示有非法字符。结果我尝试了20多次只有,终于发现论坛是不允许发“zisha”二字

   最后一点,版主也和大家一样都是在不段的学习中来提高自己。所有大家都是一样的来这里无非是为了讨论学习共同提高,交流经验和遇到的问题。所以大家要报着一颗感恩的心,真诚的对待每一个人。遇事不要太情绪话,客观的分析问题。还是那句话,大家没有实质性的利益冲突,讨论中如果你觉得他的话有些不得当(卖关子、装大腕等等),先考虑他的意见中有没有合理的地方。只要有合理的地方对方就是好心的,有责改之,无责加冕!谦虚、细心、一起进步!

这个问题就到此为止,基本没有讨论的必要了。大家再有意见就在这里跟帖:

matlab讨论区常见话题和意见征集帖

[ 本帖最后由 花如月 于 2007-7-28 13:35 编辑 ]
页: [1]
查看完整版本: Subscript indices must either be real positive integers or logicals