一、abs()用法说明
1、基本说明
功能:求整数的绝对值。
头文件:#include
定义函数:int abs(int j);
函数说明:abs()用来计算参数j的绝对值,然后将结果返回。
返回值:返回参数j的绝对值结果。
2、补充解释:
语法abs(number)=|number|
说明:number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。数字的绝对值是其无符号的数值大小。例如,Abs(-1) 和 Abs(1) 都返回 1 。
而对于在matlab中相似的函数double,double(-1)则返回-1,也就是说abs(X)返回的是X的绝对值(absolute),而double(X)返回的则是X的精确值(presision vlaue)
3、C语言中abs函数的实现方法:
最简单的可以通过位运算,先判断第一位:0是正数直接等于就行了;1就表示负数,由于采用补码存储,转换时将除首位外的各位先-1再取反,再将首位等于0就行了楼上正解,用位运算速度也很快。
二、扩展类似abs()的函数
abs(x):整数x的绝对值。abs( int x );int abs(int x) ;
fabs(x):浮点数(小数)x的绝对值。fabs( double x );double fabs(double x),精确到双精度浮点型。
pow(a, x):a的x次方,即a^x,a和x是浮点数,返回值是浮点数(即使a和x都是整数,也会被转换成浮点数,因此整数运算可能损失精度,造成误差)。
exp(x):e的x次方,即e^x,x是浮点数,e是自然对数的底数(一个无理数,值为2.71828。.)
rand()随机产生一个数;
在C++中,相应的函数为 abs() 头文件可以是 cstdlib,或是 cmath, 但是用cmath时,
abs( int i )会出现二义性(在gcc的编译器上),所以还是用cstdlib做为头文件好,
在matlab中有时会遇到函数abs(1,x)这样的函数,这个比一般abs多一个输入量,它表示函数abs(x)的导数 ,因为abs(x)在0点的导数是不存在的,而对于x为复数 abs(x)是不解析的,所以它的取值只能是正数或者负数。abs(1,x)这个函数是matlab调用maple内核 所以不能直接在matlab里来进行数值计算 否则matlab会提示abs使用错误。
对abs(1,x)赋值可以用subs来做
见以下运行命令
example:
syms d
p=abs(d);
h=diff§
h =
sign(d)
subs(h,{d},5)
ans =
1
subs(h,{d},-5)
ans =
-1subs(h,{d},0)
ans =
0
subs(h,{d},-10)ans =
-1
abs(1,2)
错误使用 abs
输入参数太多。
abs(-2)
ans =
2
abs(0)
ans =
0
abs(2)
ans =
2
补充sub指令的功能语法
subs能够在符号表达式和符号矩阵中进行置换操作,下面我们就介绍一下它的调用语法规则:
R=subs(S) %将表达式S中的所有变量用调用的函数或MATLAB workspace中获得的值进行置换,将置换后的表达式赋给R;
R=subs(S,new) %用new置换表达式S中的自变量后在赋给R;
R=subs(S,old,new) %用new置换表达式中的old,然后将置换完的表达式赋给R。
也可以通过help subs搜索matlab自带的帮助信息进一步学习。