CSDN博客

img carus

抽取小数点后几位算法效率比较

发表于2008/10/2 11:40:00  1054人阅读

最近才刚刚开始接触matlab,和不少人对matlab有着同样的一个印象,那就是感叹它竟然有如些强大的功能,由于才刚刚接触,知道的和

使用的指令还不是很多,所以几乎所有的功能都能用一个甚至多个指令来完成。

       从一个小数中抽取小数点后第2、3位,也就是说,给定一个小数,例如0.2947,现在要抽取出9和4两个数。最近以来,在老师的

指导下在学习图像处理方面的东西,由于刚刚起步,一切的一切都要从零开始,而且老师只会给你一个大的方向,具体的东西,比如说

代码、算法都是由自己一点一 点的积累和学习中不断的完成,于是出现了到处请教人的情况出现,呵呵,好像请教人还要一点点的技术

,这里就不用说了,个人经验不足,以后还要学习学习请教的学问,言归正传,matlab中有几个指令,可以用来完成这个算法:

x=0.2947;
xstr=num2str(x);%转化成字符
n=findstr(xstr,'.');%计算出小数点的位值
str2num(xstr([n+2,n+3])) %输出两个要抽取的数9和4

 这个是完全应用了matlab的指令完成的,看来似乎挺完美,但是要是真正用起来就不一定了,我所要实现的算法是要抽取256×256个小

数,可见要是应用这个算法的话要花费多少时间,就我那个算法而言,花了39秒,可见 需要改进算法,不然我的整个算法就等于没用一

般,因为用户不可能花费那么长的时间来等着程序来完成。所以我又重新写了一个算法:
a2= mod(floor(x*100),10);
a3= mod(floor(x*1000),10);
 这个算法是利用了floor这个指令,将x分别乘上100和1000之后用floor指令,得到的就是29和294,再分别对10取余,得到的就是9和4

了,这样一来,时间从原来的39秒减少到了0.9秒左右,真是把我乐坏了,呵呵

  matlab强大的功能有时在一定程序上给了我们不少好处,但是并非所有的都要它来完成,一些高效的算法还是要自己从平时中得到,

上面两个算法的比较中可以看出

阅读全文
0 0

相关文章推荐

img
取 消
img