Matlab 版 (精华区)

发信人: zjliu (秋天的萝卜), 信区: Matlab
标  题: [合集] 怎样快速判断一个数属于哪个区间
发信站: 哈工大紫丁香 (Sat Jul  1 14:49:37 2006), 站内

────────────────────────────────────────
  TeX (将TeX进行到底)              于  (Wed Apr 12 16:30:45 2006)  说道:

有四个数值区间:

(0,0.5)(0.5,1)(1,1.5)(1.5,2)

四个区间分别记为I,II,III,IV

给出0<x<2

在matlab中怎样快速判断x属于那个区间,位于分界点上的数值认为不属于任何一个区间



────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 16:40:28 2006)  说道:

看看这个和if语句哪个快?

N=1*([x]*[x-0.5]<0)+2*([x-0.5]*[x-1]<0)+3*([x-1]*[x-1.5]<0)+...
  4*([x-1.5]*[x-2]<0);
N is the number of set.

【 在 TeX (将TeX进行到底) 的大作中提到: 】
: 有四个数值区间:
: (0,0.5)(0.5,1)(1,1.5)(1.5,2)
: 四个区间分别记为I,II,III,IV
: ...................



────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 17:13:07 2006)  说道:

另外根据区间的特点,这样做也可
N=max(round(x/0.5)+1,4);
【 在 TeX (将TeX进行到底) 的大作中提到: 】
: 有四个数值区间:
: (0,0.5)(0.5,1)(1,1.5)(1.5,2)
: 四个区间分别记为I,II,III,IV
: ...................



────────────────────────────────────────
  TeX (将TeX进行到底)              于  (Wed Apr 12 17:51:02 2006)  说道:

受你启发
N=ceil(x/0.5)

【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 另外根据区间的特点,这样做也可
: N=max(round(x/0.5)+1,4);




────────────────────────────────────────
  hitwdh (心灯)                    于  (Wed Apr 12 18:25:47 2006)  说道:

你或萝卜看看这几个语句的时间?然后总结一下,写个paper(发在bbs上),我允许被我的俱乐部数据库收录.... 

【 在 TeX (将TeX进行到底) 的大作中提到: 】
: 受你启发
: N=ceil(x/0.5)




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 19:47:56 2006)  说道:

你做吧,把我和TeX的观点引为参考文献
【 在 hitwdh (心灯) 的大作中提到: 】
: 你或萝卜看看这几个语句的时间?然后总结一下,写个paper(发在bbs上),我允许被我的俱乐部数据库收录.... 




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 19:58:28 2006)  说道:

This program can test the speed and is written as follows:

N=20000;
rand('state',0);
x=rand(1,N)*2;
t1=cputime; 
for k=1:N;
    N(k)=1*([x(k)]*[x(k)-0.5]<0)+2*([x(k)-0.5]*[x(k)-1]<0)+...
        3*([x(k)-1]*[x(k)-1.5]<0)+4*([x(k)-1.5]*[x(k)-2]<0);
end
t1=cputime-t1,
t2=cputime; 
for k=1:N;
    N(k)=max(round(x(k)/0.5)+1,4);
end
t2=cputime-t2,
t3=cputime; 
for k=1:N;
    N(k)=ceil(x(k)/0.5);
end
t3=cputime-t3,

According to above program, you can give a conclusion for us.  

【 在 hitwdh (心灯) 的大作中提到: 】
: 你或萝卜看看这几个语句的时间?然后总结一下,写个paper(发在bbs上),我允许被我的俱乐部数据库收录.... 




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 20:00:13 2006)  说道:

The TeX's method is best in three methods, hehe
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: This program can test the speed and is written as follows:
: N=20000;
: rand('state',0);
: ...................



────────────────────────────────────────
  hitwdh (心灯)                    于  (Wed Apr 12 20:03:13 2006)  说道:

ft... 

 format long

t1 =

   3.09375000000000


t2 =

     0


t3 =

     0

【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: This program can test the speed and is written as follows:
: N=20000;
: rand('state',0);
: ...................



────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 20:05:25 2006)  说道:

Your computer is better than mine, hence you should take
bigger value of N.

【 在 hitwdh (心灯) 的大作中提到: 】
: ft... 
:  format long
: t1 =
: ...................



────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 20:06:48 2006)  说道:

add it to my blog, hehe
【 在 hitwdh (心灯) 的大作中提到: 】
: 你或萝卜看看这几个语句的时间?然后总结一下,写个paper(发在bbs上),我允许被我的俱乐部数据库收录.... 




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 20:16:04 2006)  说道:

here
http://luobo.yculblog.com/post.1194137.html
【 在 hitwdh (心灯) 的大作中提到: 】
: ft... 
:  format long
: t1 =
: ...................



────────────────────────────────────────
  hitwdh (心灯)                    于  (Wed Apr 12 20:18:37 2006)  说道:

完蛋,加了3个0,结果算第一个大约要3000s了,我耗不起.....
^C重来了....
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: Your computer is better than mine, hence you should take
: bigger value of N.




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 20:19:43 2006)  说道:

弱了吧,慢慢增加阿,呵呵
你的机器比俺的好多了,我的N=20000就能看出差别了
【 在 hitwdh (心灯) 的大作中提到: 】
: 完蛋,加了3个0,结果算第一个大约要3000s了,我耗不起.....
: ^C重来了....




────────────────────────────────────────
  hitwdh (心灯)                    于  (Wed Apr 12 20:34:43 2006)  说道:


缩小,终于算出来啦... 不过有些问题,嘿嘿

N=10000;

t1 =

   0.71875000000000


t2 =

   0.03125000000000


t3 =

     0

N=50000;

t1 =

  25.35937500000000


t2 =

     0


t3 =

   0.03125000000000


【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 弱了吧,慢慢增加阿,呵呵
: 你的机器比俺的好多了,我的N=20000就能看出差别了




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 20:36:04 2006)  说道:

你的机器不稳定,哈哈
不过我猜想round函数应该是比较快的
【 在 hitwdh (心灯) 的大作中提到: 】
: 缩小,终于算出来啦... 不过有些问题,嘿嘿
: N=10000;
: t1 =
: ...................



────────────────────────────────────────
  hitwdh (心灯)                    于  (Wed Apr 12 20:39:43 2006)  说道:

:(  

不管啦,可以用就行了,嘿嘿,可能是其他程序影响,我打开的程序太多啦....


【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 你的机器不稳定,哈哈
: 不过我猜想round函数应该是比较快的




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Apr 12 20:41:15 2006)  说道:

我对速度不怎么在意,这里面的2、3方法都可取,呵呵
【 在 hitwdh (心灯) 的大作中提到: 】
: 不管啦,可以用就行了,嘿嘿,可能是其他程序影响,我打开的程序太多啦....




────────────────────────────────────────
  TeX (将TeX进行到底)              于  (Thu Apr 13 09:15:38 2006)  说道:

现在的实际问题中我的各个区间可能不是等长的,看来好像只有第一个方法可以用了
这几个方法都可以写成向量计算式的,时间上可能差异不大

另外刚仔细看了一下,方法二好像有问题
N(k)=max(round(x(k)/0.5)+1,4)
结果不对

【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 我对速度不怎么在意,这里面的2、3方法都可取,呵呵




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Thu Apr 13 09:17:43 2006)  说道:

嗯,同意
【 在 TeX (将TeX进行到底) 的大作中提到: 】
: 现在的实际问题中我的各个区间可能不是等长的,看来好像只有第一个方法可以用了
: 另外这几个方法都可以写成向量计算式的,时间上可能差异不大




[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.736毫秒