由于实验室的项目要用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 符号函数