加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何在Matlab中得到一个单、双精度数的整数部分和小数部分?

(2008-03-01 07:01:06)
标签:

matlab

编程技巧

教育

对于一个单、双精度数,获得其单独的整数部分或小数部分在一些程序中有特殊的作用。如对一个数进行去模运算、对一幅图像进行剪切使其高、宽是某个数的整数倍等等。

对于取整,在C语言中有专门的取整符号[],在Matlab中三种方法实现

(1)数据类型转换

可以采用数据类型变换的方法进行。

a=12.356;

b=double(uint16(a));   %这里利用了浮点数变无符号整型数时的四舍五入的特点

if a<b

b=b-1;    %若b>a,说明是五入的情况,故要减去1

end    b就是其整数部分

等到了整数部分,小数部分就好办了:

c=a-b;

(2)取余数

如果知道被除数、除数,求其商的整数部分和小数部分,这时可以采用Matlab中的去模函数mod();直接得到整数部分,当然小数部分也就得到了

m=258;

n=13;

m0=mod(m,n);    %去模

b=(m-m0)/n;    %整数部分

c=m/n-b;    %小数部分

也可以使用取余数的函数rem,代替去取模函数,

m=258;

n=13;

m0=rem(m,n);    %取余数

b=(m-m0)/n;    %整数部分

c=m/n-b;    %小数部分

    (3)直接使用相关函数

利用几个函数可以更方便快捷的得到整数部分,但其结果是有差别的,使用时请大家注意,并灵活应用。

floor(x):得到不大于x的整数值;

round(x):得到最接近x 的整数值;

ceil(x):得到不小于x的整数值;

fix(x):得到绝对值不大于x绝对值的整数值。

举例如下:

若x=[ -1.9 -0.2 3.4 5.6 7.0 2.4+3.6i ],则floor(x)、round(x)、ceil(x)和fix(x)的值分别如下:

-2.0  -1.0  3.0  5.0  7.0  2.0+3.0i

-2.0   0   3.0  6.0  7.0  2.0+4.0i

-1.0   0   4.0  6.0  7.0  3.0+4.0i

-1.0   0   3.0  5.0  7.0  2.0+3.0i

函数fix()满足我们一般取整数部分的要求。对于正数,可以用函数floor()和fix()来代替前面的程序。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有