- 在线时间
- 57 小时
- 最后登录
- 2013-10-20
- 注册时间
- 2012-3-19
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 1080 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 433
- 相册
- 0
- 日志
- 0
- 记录
- 7
- 帖子
- 196
- 主题
- 13
- 精华
- 0
- 分享
- 82
- 好友
- 20
升级   44.33% TA的每日心情 | 开心 2013-10-20 20:29 |
|---|
签到天数: 103 天 [LV.6]常住居民II
- 自我介绍
- 建模编程方向
 群组: 学术交流A |
取模(mod)与取余(rem)的区别——Matlab学习笔记【09-11-15】
5 z* J" a8 E2 g( r% ?本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者- a. G" U# U* o# M8 ~
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:3 }' F% j6 {* ^4 L
& l$ ~) F, a; p& q* A2 S通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:3 `; X7 T# V" j7 e* H4 c
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。& W2 X- U4 ]- a* C1 ^' H
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。, |$ A& w% c6 _4 w
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
2 |1 ?0 ~3 J" R3 }- s6 Q; z, @3 b6 L
m2 F0 T) ~# o+ f' |6 a; ^; ~8 g9 W0 S. q0 y2 R. v
两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)* B2 e9 e9 V4 E. u3 L0 h
' [; Y' X5 O+ J
先将两个整数看作是正数,再作除法运算
9 \+ [3 h; k1 u1 V7 e$ p①能整除时,其值为0' O7 k/ j+ r1 D2 m% o
②不能整除时,其值=除数×(整商+1)-被除数4 f- \+ U8 s- O2 c3 o' K! t
0 R8 [5 u$ [+ f9 }
例:mod(36,-10)=-4% \0 k: ~: N. `$ Y
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
. V; o u" J# [- L: M2 F7 Q" @例:mod(9,1.2)=0.6% Z& J0 j6 }0 D( @* k7 x
例:0 @+ z' m, n) \% z% q" I5 A! H
>> mod(5,2)
) z1 c* F# ?5 Y# m1 B1 d: Y. n kans =1 %“除数”是正,“余数”就是正
# e, |; u+ M3 @, ]% ?0 W& P: m>> mod(-5,2)
/ t0 e/ W5 c+ E8 Nans =1- N" j7 d! x2 I
>> mod(5,-2)
% Y6 p: ~! c/ U X: o: _" W2 vans =-1 %“除数”是负,“余数‘就是负9 X+ y* E6 {% W3 ?. V3 y
>> mod(-5,-2)/ D& v, v8 a6 c8 v1 v
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同1 U ]* q. e& c* q; P2 y6 |8 b8 k. ^
>> rem(5,2)- @. F: a+ B+ S% }
ans =1 %“被除数”是正,“余数”就是正2 J$ |) K+ y7 S8 w* [) s# J9 L7 ?
>> rem(5,-2)" g& ]: U% Q1 s1 \( o' u N; A7 b
ans =1) r/ s t; t3 m5 a) a; G
>> rem(-5,2)5 B" z% s8 N! ^' ^
ans =-1 %“被除数”是负,“余数”就是负( J# X2 D" J8 c1 s) [, p! B, D
>> rem(-5,-2)- N( b* O1 o2 R) F
ans =-1$ x9 l6 _+ p L5 I
% k( i0 K3 A7 r c; Q5 O# s" H p" x j1 q6 u1 _$ r5 B* Z# m
慢慢体会,两者确实不一样
' ?7 |5 m; ^8 T# l& a3 K6 m |
zan
|