matlab中求余、求模运算方法总结

2019-04-13 13:52发布

由于实验室的项目要用matlab做仿真,开始学习matlab中,虽然刚开始碰到的问题都很基础,但还是mark一下,也算是一个学习笔记吧   首先看一个例子:求所有的三位数,使其各位数字的立方和等于其本身,也称这样的数字为水仙花数! 代码: for n=100:999
    if mod(n,10)^3+fix(mod(n,100)/10)^3+fix(n/100)^3==n
        n
    end
end
运行及可得结果 n =    153  370 371 407   下面分别介绍: 1,n的百位数字  baiwei=fix(n/100) 这里注意在matlab中假设n=123,则n/100的结果是1.23而不是1,所以这里用fix函数。 fix: 朝零方向取整 2,n的十位数字 shiwei=fix(mod(n,100)/10) mod: 模数求余。   另外这里注意mod与rem的区别: 通过看他们的帮助文件可以知道,这两个数的符号一致时的结果是一样的,但是当两个数的符号不一样时,就会出现不同了。
>> mod(3,-2)
ans =
-1

>> rem(3,-2)
ans =
1
主要区别在rem(x,y)命令返回的是x - n.*y,如果y不等于0,其中的n = fix(x./y),而MOD(x,y)返回的是x - n.*y,当y不等于0时,n = floor(x./y)

因此他们之间的区别主要在与fix与floor的区别。fix是想最近的整数取整,而floor是向负无穷取整。   最后总结一下: ceil 朝正无穷大方向取整
fix 朝零方向取整
floor 朝负无穷大方向取整
mod 模数求余
rem 求余数
round 四舍五入取整
sign 符号函数