关于从数列抽取满足条件的子列的问题
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 编辑 ] “m1==m2”表示判断m1是否等于m2
回复 #2 VibrationMaster 的帖子
发帖子前改过来了,但不是这个问题:loveliness: 仔细考虑 if 语句是否合适即知.(all的使用改与不改似乎问题不大,当然最好不要与内置函数重复).
[ 本帖最后由 xjzuo 于 2007-10-17 15:28 编辑 ] 原帖由 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]