- 在线时间
- 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】. d" {- f* }5 V1 K1 G' `2 ]
本帖来自:数学中国 作者: 木长春 日期: 2009-11-15 19:51 您是本帖第535个浏览者% }3 W' x9 O' L
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:
3 N* U% C7 ~8 Q$ n/ M e# t# b. V+ s2 [4 _" A1 E( A$ s% a
通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:1 u" V% x5 V1 M8 m, `' y+ C$ r
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。; [- D" M) M9 {7 I3 r% I% Q7 o3 Z0 z
这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。% G# D) p5 R/ @$ e# t6 @
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
9 P0 ?# @/ Q/ C; c% Y7 e3 M ^( j' e4 \- _$ V$ V7 D2 Q
+ ~+ J8 s9 N ^+ a) j两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
4 ^. |+ `9 T& e0 J
- S8 G1 }2 r4 N* p( e# z先将两个整数看作是正数,再作除法运算7 v! M0 F* v7 |' ?* V& O. j, S
①能整除时,其值为0
5 ?' C' y: m7 d- [9 _②不能整除时,其值=除数×(整商+1)-被除数) `5 C- \2 k7 v) A8 w6 U6 U
: ~4 w5 ] e. m% u+ W
例:mod(36,-10)=-4+ a$ ]' E/ @1 y& X1 A) Z6 M/ T0 n
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。
6 `$ M! r) h: N* ]$ d% d例:mod(9,1.2)=0.6! U, A! N) d1 m& z* }: j
例:
4 a* T/ l9 V2 l. j. M>> mod(5,2)
4 M6 R& n- Q1 y' ^' t" s; b% T3 mans =1 %“除数”是正,“余数”就是正
) l# ~) B6 K2 z, p# Y>> mod(-5,2)
# y8 |9 u6 Z H! O8 H8 C; @ans =1
" `7 W7 d6 L4 k: I4 ]' B8 q/ p>> mod(5,-2)
6 I( w. M/ |$ P9 B) tans =-1 %“除数”是负,“余数‘就是负
, }/ q( _7 q8 Z& A, b>> mod(-5,-2)3 j( x& J. w! T/ A8 w" r
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同
7 m( W( D; o; B% U) w1 ^>> rem(5,2)* P, x- J1 W- a, y5 Q
ans =1 %“被除数”是正,“余数”就是正8 F" g2 D6 R4 d& h. H6 Y: k* e
>> rem(5,-2)
4 F8 n2 P" C" l9 d% k' f- Wans =1
' _; M/ K6 s C+ o& G>> rem(-5,2)
4 \: N8 C) v1 e/ p8 U2 [' Oans =-1 %“被除数”是负,“余数”就是负
. b+ o% s( J8 |' M>> rem(-5,-2)! x' H3 ^/ b' y7 T* H
ans =-1+ S2 x% W0 Z; Y- ?7 ]. l! g" o
( F9 Q4 s) h0 T# K4 n( u
& S& G" w0 ]8 m" s慢慢体会,两者确实不一样2 v( ~. s1 D8 t8 [% j8 s! ^
|
zan
|