cmcc 发表于 2007-10-17 14:28

关于从数列抽取满足条件的子列的问题

all是随机生成的数列,第一个数作为m1,下一个取出来的数m2比m1至少增加0.3,然后把m2当作m1,重复上述过程。最后生成抽出值在all中的坐标
编了个小程序,并没有拿到理想的结果,有几个问题没想出来:用m1=m2赋值后,好像并没有再循环。
刚开始接触用程序解决问题,让大家见笑了!

all=randperm(396);
m1=1;
for i=1:396
   
          if all(i)>all(m1)*1.3
                  m2=i;
               all(i)
               m1=m2;
       end

[ 本帖最后由 cmcc 于 2007-10-17 15:30 编辑 ]

VibrationMaster 发表于 2007-10-17 14:33

“m1==m2”表示判断m1是否等于m2

cmcc 发表于 2007-10-17 14:37

回复 #2 VibrationMaster 的帖子

发帖子前改过来了,但不是这个问题:loveliness:

xjzuo 发表于 2007-10-17 15:11

仔细考虑 if 语句是否合适即知.
(all的使用改与不改似乎问题不大,当然最好不要与内置函数重复).

[ 本帖最后由 xjzuo 于 2007-10-17 15:28 编辑 ]

eight 发表于 2007-10-17 15:19

原帖由 cmcc 于 2007-10-17 14:28 发表 http://www.chinavib.com/forum/images/common/back.gif
all是随机生成的数列,第一个数作为m1,下一个取出来的数m2比m1至少增加0.3,然后把m2当作m1,重复上述过程。最后生成抽出值在all中的坐标
编了个小程序,并没有拿到理想的结果,有几个问题没想出来:用m1==m2赋 ...

建议先阅读一下 matlab 基础书,掌握一定的基础以后,才开始编程,不然很容易到处碰钉子的。我敢保证,这个错误如果不是我指出来,很多人(包括你)就算看两三天也未必能够知道出错的原因:

这是因为在 matlab 中, all 是一个命令、或者说一个函数,你硬是拿来作为你的变量,在第一行 all 被赋值的时候是没错的,可是在条件语句中,因为要对 all 这个数组的元素进行访问,所以,你必须写 all(i)。这样一来,matlab 就把它看作一个命令了,就是判断里面的参数是否全是非零,这可是一个表达式啊!

你把 all 这个名字全部修改掉,就能解决了
页: [1]
查看完整版本: 关于从数列抽取满足条件的子列的问题