- 在线时间
- 2 小时
- 最后登录
- 2011-10-21
- 注册时间
- 2009-7-12
- 听众数
- 14
- 收听数
- 0
- 能力
- 0 分
- 体力
- 2150 点
- 威望
- 17 点
- 阅读权限
- 50
- 积分
- 932
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 192
- 主题
- 26
- 精华
- 2
- 分享
- 0
- 好友
- 6
升级   83% TA的每日心情 | 开心 2011-10-21 21:58 |
---|
签到天数: 13 天 [LV.3]偶尔看看II
- 自我介绍
- 进化中。。。。。。。。
 |
昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:$ q, R( w1 w) J6 |3 i( e
0 P' [5 F5 d" }通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:# q7 _' T7 J; x( {
当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。
5 l* i% t" `$ z! p/ _$ ^1 |- d 这是由于这两个函数的生成机制不同,rem函数采用fix函数,而mod函数采用了floor函数(这两个函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入)。+ F+ k& l$ y9 A! [+ _3 H
rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)
1 |4 L% P) `! F$ o! H; s! }! d+ ]: i: B m/ `5 ?' ?7 s
5 s- x- ^, ~2 @6 j两个异号整数取模取值规律 (当是小数时也是这个运算规律,这一点好像与C语言的不太一样)
6 j1 B7 K& I" M3 M
& s0 I8 C' G3 U2 ?先将两个整数看作是正数,再作除法运算
" f0 i4 s# r% K9 o0 G①能整除时,其值为0
8 ]1 b4 k1 Q" h, a( g②不能整除时,其值=除数×(整商+1)-被除数0 r# P* }: z* O8 `* h
* J5 ]! H3 F) p# C% ^6 _7 Z8 H例:mod(36,-10)=-4
# P# Q% {& o! N: Q& A ?8 a即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。 - j* q) F$ d5 Y) Q: m" Q* D9 u3 A
例:mod(9,1.2)=0.6
; f% M7 S6 i% e5 L) d* t C+ `例:* L1 P+ z" X6 [: r4 @
>> mod(5,2)4 v2 X" {. S5 d. q( k! O; }( O
ans =1 %“除数”是正,“余数”就是正
" v" S* n9 v9 p% F/ M>> mod(-5,2)
! \' T `. C B& Pans =1; q. i( m! k. }
>> mod(5,-2)
. \& u; o& d1 {: oans =-1 %“除数”是负,“余数‘就是负4 I7 D: J6 F0 z* Y7 i/ w! e" c
>> mod(-5,-2)3 `, q1 J2 ?) L% @7 ^( R
ans =-1 %用rem时,不管“除数”是正是负,“余数”的符号与“被除数”的符号相同4 _ ]/ }; v$ u+ D& K x' ^& C+ t
>> rem(5,2)
1 C6 W7 e* S/ H& L/ |' mans =1 %“被除数”是正,“余数”就是正
% [: j1 ]2 s2 w3 s: p2 T y9 V8 h: @>> rem(5,-2)+ l' l" z0 _) J+ K5 C1 f
ans =1
! m0 t, H# m# t7 { T>> rem(-5,2)
7 l. m4 R p J9 U& Aans =-1 %“被除数”是负,“余数”就是负* e+ h0 v: E* q( n( u: G7 z' m
>> rem(-5,-2)
/ u9 M# A6 K( ^9 U H9 ~: vans =-1
$ P8 E, u' Z5 i+ G+ ^$ o5 s$ \8 j( w: p: R$ b/ R& L' _
2 P5 f6 B& [+ S/ C2 R5 f
慢慢体会,两者确实不一样 |
zan
|