声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1363|回复: 4

[编程技巧] 关于从数列抽取满足条件的子列的问题

[复制链接]
发表于 2007-10-17 14:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-10-17 14:33 | 显示全部楼层
“m1==m2”表示判断m1是否等于m2

评分

1

查看全部评分

 楼主| 发表于 2007-10-17 14:37 | 显示全部楼层

回复 #2 VibrationMaster 的帖子

发帖子前改过来了,但不是这个问题:loveliness:
发表于 2007-10-17 15:11 | 显示全部楼层
仔细考虑 if 语句是否合适即知.
(all的使用改与不改似乎问题不大,当然最好不要与内置函数重复).

[ 本帖最后由 xjzuo 于 2007-10-17 15:28 编辑 ]
发表于 2007-10-17 15:19 | 显示全部楼层
原帖由 cmcc 于 2007-10-17 14:28 发表
all是随机生成的数列,第一个数作为m1,下一个取出来的数m2比m1至少增加0.3,然后把m2当作m1,重复上述过程。最后生成抽出值在all中的坐标
编了个小程序,并没有拿到理想的结果,有几个问题没想出来:用m1==m2赋 ...


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

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

你把 all 这个名字全部修改掉,就能解决了

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 14:00 , Processed in 0.061285 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表