matlab里rem和mod函数区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab里rem和mod函数区别?相关的知识,希望对你有一定的参考价值。

据说rem(x,y)的ans符号与x相同,mod(x,y)的ans符号与y相同,是这样嘛~~?

但是自己试程序的时候发现结果是不一样的
>> rem(-12.2,2)
ans =
-0.2000

>> mod(-12.2,2)
ans =
1.8000

为什么用mod()函数的结果会得到1.8?

rem和mod的区别只有一点:

当x和y的正负号一样的时候,两个函数结果是等同的;

当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。

rem函数采用fix函数,mod函数采用了floor函数。fix函数和mod函数是用来取整的,fix函数向0方向舍入,floor函数向无穷小方向舍入。

rem(x,y)命令返回的是x-n.*y,如果y不等于0,其中的n = fix(x./y),而mod(x,y)返回的是x-n.*y,当y不等于0时,n=floor(x./y)。

扩展资料:

两个异号整数取模取值规律:

先将两个整数看作是正数,再作除法运算:

能整除时,其值为0;

不能整除时,其值=除数×(整商+1)-被除数。

例如:mod(36,-10)=-4

即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被数之差为(40-36=4);取除数的符号。所以值为-4。

例:mod(9,1.2)=0.6;

参考技术A

没问题啊,mod函数的结果与y符号相同,这里y=2是正数,所以得到的是1.8。

 

mod(x,y)和rem(x,y)的计算表达式都是

x - n.*y

但n的定义不同,对于rem

n = fix(x./y) = -6

而对于mod

n = floor(x./y) = -7

所以

rem(-12.2,2) = -12.2 - (-6)*2 = -0.2
mod(-12.2,2) = -12.2 - (-7)*2 = 1.8

 

概括起来:如果x、y同号,rem和mod结果相同;如果x、y不同号,则rem(x,y)的符号与x相同,mod(x,y)的符号与y相同。

追问

我的意思是,这两个函数不都是除后面那个数再取余数吗?为什么一个是0.2一个是1.8呢?

追答

我上面说的还不够清楚吗?
所谓“取余数”,就是从被除数中减去除数的整数倍,而这个“整数倍”的整数对于mod和rem的含义不同,所以会有结果的差异。

本回答被提问者采纳
参考技术B rem(x,y)与mod(x,y)的区别:
当x,y同号时,rem与mod结果相同;
当x,y异号时,rem(x,y)与x同号,mod(x,y)与y同号。
在算法上:
rem(x,0)是NaN.
rem(x,x), 当 x~=0, 是 0.
rem(x,y), 当 x~=y 和 y~=0时, 与 x同号.

mod(x,0) 是 x.
mod(x,x) 是 0.
mod(x,y), 当 x~=y 和 y~=0时, 与 y同号.
参考技术C 没问题啊,mod函数的结果与y符号相同,这里y=2是正数,所以得到的是1.8。

mod(x,y)和rem(x,y)的计算表达式都是

1

x - n.*y

但n的定义不同,对于rem

1

n = fix(x./y) = -6

而对于mod

1

n = floor(x./y) = -7

所以

1
2

rem(-12.2,2) = -12.2 - (-6)*2 = -0.2
mod(-12.2,2) = -12.2 - (-7)*2 = 1.8

概括起来:如果x、y同号,rem和mod结果相同;如果x、y不同号,则rem(x,y)的符号与x相同,mod(x,y)的符号与y相同。
所谓“取余数”,就是从被除数中减去除数的整数倍,而这个“整数倍”的整数对于mod和rem的含义不同,所以会有结果的差异。
参考技术D

MATLAB文档中介绍:rem(X,Y) and mod(X,Y) are equal if X and Y have the same sign, but differ by Y if X and Y have different signs. Notice that rem retains the sign of X, while mod retains the sign of Y. 如果X和Y同号,则rem与mod等价;否则,不相同。rem的结果与X符号相同,mod的符号与Y相同。

matlab 中mod的用法

matlab中函数MOD可以借用函数 INT 来使用并表示:MOD(n, d) = n - d*INT(n/d)。

示例:

MOD(3, 2) 等于 1;

MOD(-3, 2) 等于-1;

MOD(3, -2) 等于1;

MOD(-3, -2) 等于-1;

MOD(-3, 0) 等于-3;

MOD(3, 0) 等于3;

MOD(2,0) 等于2;

注意:以上为Oracle中MOD函数的计算方法,在Pl/sql Dev中测试过。 

在EXCEL中:

MOD(-3, 2) 等于1(与后面的数符号相同)。

MOD(3, -2) 等于-1(与后面的数符号相同)。

mod(3,0)则出错#DIV/0!

扩展资料:

一、两个异号整数求余:

1.函数值符号规律(余数的符号) mod(负,正)=正 mod(正,负)=负

结论:两个整数求余时,其值的符号为除数的符号。

2.取值规律 先将两个整数看作是正数,再作除法运算

1)能整除时,其值为0 (或没有显示)

2)不能整除时,其值=除数×(整商+1)-被除数

例:mod(36,-10)=-4 即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被除数之差为(40-36=4);取除数的符号。所以值为-4。

二、两个小数求余,取值规律:

被除数-(整商×除数)之后在第一位小数位进行四舍五入。

例:mod(9,1.2)=0.6即:9除1.2其整商为7;7与除数1.2之积为8.4;被除数9与8.4之差为0.6。故结果为0.6。

例:mod(9,2.2)=0.2 即:9除2.2其整商为4;4与除数2.2这积为8.8;被除数9与8.8之差为0.2,故结果为0.2。

三、在VB中,定义为被除数和除数先四舍五入,然后再相除求余数。

参考资料来源:百度百科—MOD (MATLAB函数)

参考技术A

mod函数是求余函数,用法如下:

b = mod(a,m) 返回用 m 除以 a 后的余数

其中 a 是被除数,m 是除数。

注意:正负号不同的两个数使用mod函数所得值得正负问题

1、mod(负 , 正)=正

2、mod(正 , 负)=负

例子:

一、mod(-x , y):所得到的值为正

>> mod(-1,2)

ans =

1

二、mod(x , -y):所得到的值为负

>>mod(1,-2)

ans =

-1

扩展资料:

MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。

函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。

在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。

函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

参考资料:百度百科MATLAB

参考技术B 简单的说mod(a,b)就是求的是a除以b的余数。比方说mod(100,3)=1,mod(17,6)=5
详细用法见下

mod

Modulus after division

Syntax

M = mod(X,Y)

Description

M = mod(X,Y) if Y ~= 0, returns X - n.*Y where n = floor(X./Y). If Y is not an integer and the quotient X./Y is within roundoff error of an integer, then n is that integer. The inputs X and Y must be real arrays of the same size, or real scalars.

The following are true by convention: mod(X,0) is X mod(X,X) is 0 mod(X,Y) for X~=Y and Y~=0 has the same sign as Y.

Remarks

rem(X,Y) for X~=Y and Y~=0 has the same sign as X.

mod(X,Y) and rem(X,Y) are equal if X and Y have the same sign, but differ by Y if X and Y have different signs.

The mod function is useful for congruence relationships: x and y are congruent (mod m) if and only if mod(x,m) == mod(y,m).

Examples

mod(13,5)
ans =
3

mod([1:5],3)
ans =
1 2 0 1 2

mod(magic(3),3)
ans =
2 1 0
0 2 1
1 0 2本回答被提问者采纳
参考技术C mod(a,m)
即a÷m=x……y
mod(a,m)的值的正负取决于m的正负,即m为正,值就为正,m为负,值就为负。
当a,m同号时,mod(a,m)的值等于y
当a,m异号时,mod(a,m)的值等于(x+1)×m-a

以上是关于matlab里rem和mod函数区别?的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中取模(mod)与取余(rem)的区别

求模Matlab中提供了rem和mod的区别

matlab中rem函数的作用?

matlab中mod是啥意思

matlab中的rem怎么用

matlab mod 函数