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毫秒