MATLAB 的运算符

在MATLAB中,提供了丰富的运算符,运算主要包括算数运算、关系运算和逻辑运算。

一、算数运算符

分为标量和数组运算和矩阵运算。需要注意:对于a/b,是a除以b,对于a\b,是b除以a。在MATLAB中,采用符号^表示乘方运算,采用 log2()计算对数。

例子:

>> a=20;
>> b=15;
>> c1=a*b     %乘法
c1 =
   300
------------------------------------------
>> c1=a/b     %右除法
c1 =
    1.3333
------------------------------------------
>> c3=a\b     %左除法
c3 =
    0.7500
------------------------------------------
>> c4=2^20     %乘方
c4 =
     1048576
------------------------------------------
>> c5=log2(c4)     %对数

c5 =
    20

二、关系运算符(返回值是逻辑型logical)

例子:

>> a=randn(3,5)      %randn()产生由随机数组成的矩阵
a =
   -0.2050    1.4090   -1.2075    0.4889   -0.3034
   -0.1241    1.4172    0.7172    1.0347    0.2939
    1.4897    0.6715    1.6302    0.7269   -0.7873
------------------------------------------
>> b1=a>=0.3    %大于等于
b1 =
  3×5 logical 数组

   0   1   0   1   0
   0   1   1   1   0
   1   1   1   1   0
------------------------------------------
>> b2=lt(a,0.7)    %小于
b2 =
  3×5 logical 数组

   1   0   1   1   1
   1   0   0   0   1
   0   1   0   0   1
------------------------------------------
>> b2=b1~=b2     %不等于
b2 =
  3×5 logical 数组

   1   1   1   0   1
   1   1   1   1   1
   1   0   1   1   1

另,对于浮点数的比较,因为浮点数在存储时存在相对误差。在程序中,最好不要直接比较两个浮点数是否相等,而是通过两个浮点数的差是否小于某个特别小的数来判断是否相等。

例子:比较两个浮点数是否相等。

>> format long;   %改变数据显示的位数
>> a=3.1415926
a =
   3.141592600000000
----------------------------------------------------------------
>> c1=a==pi    %直接进行比较,采用关系运算符“==”,则两个浮点数不相等
c1 =
  logical
   0
----------------------------------------------------------------
>> c2=abs(a-pi)<1e-5       %比较差值是否小于 1e-5,是则相等
c2 =
  logical
   1

三、逻辑运算符

MATLAB的逻辑运算分为三类,分别是:逐个元素的逻辑运算、快速逻辑运算、逐位逻辑运算。

(一)逐个元素的逻辑运算

运算符 函数 说明
& and 逻辑与(单目)
| or 逻辑或(单目)
~ not 逻辑非(双目)
xor 逻辑异或

(二)快速逻辑运算

 运算符 说明
&& 快速逻辑与,当第一个操作数为假时,直接返回假,否则与 & 相同
|| 快速逻辑或,当第一个操作数为真时,直接返回真,否则与 | 相同

(三)逐位逻辑运算

函数 函数说明
bitand(a,b) 逐位逻辑与
bitor(a,b) 逐位逻辑或
bitcmp(a,b) 逐位逻辑非
bitxor(a,b) 逐位逻辑异或

四、运算符的优先级

picture via :blog.sina.com.cn/xywatersky

时间: 2024-10-10 11:48:02

MATLAB 的运算符的相关文章

编写 Matlab mexFunction (C mex)

资料一 MATLAB的MEX文件编写和调试 1. MEX的编写格式 写MEX程序其实就是写一个DLL程序,所以你可以使用C,C++,Fortran等多种编程语言来写. 编写MEX程序的编辑器可以使用MATLAB的代码编辑器,也可使用自己的C++编辑器,如VS2008等. 用MATLAB的编辑器的好处是,MEX函数会加粗高亮显示,这给程序编写带来便利,可惜无法动态调试.如用VC即可编译也可调试,比较方便.mex的编译结果实际上就是一个带输出函数mexFunction 的dll文件,所以会用VC编写

Matlab以MEX方式调用C源代码【转载】

原文地址:http://blog.sina.com.cn/s/blog_468651400100coas.html 如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数: double add(double x, double y) { return x + y; } 现在我想要在Matlab中使用它,比如输入: >> a = add(1.1, 2.2) 3.3000 要得出以上的结果,那应该怎样做呢? 解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的

matlab学习笔记杂项三

1.可以利用 MATLAB 函数比较两字符串整体是否相同.它们是 ?? strcmp 判断两字符串是否等价 ?? strcmpi 忽略大小写判断两字符串是否等价 ?? strncmp 判断两字符串前n 个字符是否等价 ?? strncmpi 忽略大小写判断两字符串前n 个字符是否等价 2.我们可以利用MATLAB关系运算符对字符数组中的每一个元素进行检测,看是否相同,但是我们要保证它们的维数是相同的,或其中一个是标量.例如,你可以用相等运算符(==)来检测两字符串是否相匹配. >> a = '

Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(二)

如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数: double add(double x, double y) { return x + y; } 现在我想要在Matlab中使用它,比如输入: >> a = add(1.1, 2.2) 3.3000 要得出以上的结果,那应该怎样做呢? 解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便.MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的.可以这样理解,MEX文件实现了一种

初识MATLAB之编程基础一

之前4篇随笔初识MATLAB之文件读取,初识MATLAB之矩阵,初识MATLAB之运算符与字符串,初识MATLAB之数据类型介绍了MATLAB基础.接下来分2篇随笔来介绍MATLAB之编程基础.其中编程基础一讲述变量,语句及控制结构.编程基础二讲述M文件及函数. 一 变量和语句 1.1 变量 变量命名:有一些命名规则. 1)对字母大小写敏感. 2)开头必须是字母. 3)不能使用关键字.关键字共有20个(可通过命令iskeyword查询,如下所示) >> keywords= reshape(is

[Matlab]求解线性方程组

转自:http://silencethinking.blog.163.com/blog/static/911490562008928105813169/ AX=B或XA=B在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/”和“\”.如: X=A\B表示求矩阵方程AX=B的解: X=B/A表示矩阵方程XA=B的解. 对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理. 如果矩阵A不是方阵,其维数是m×n,则有: m=

MATLAB基础(3)

1.MATLAB的运算 本次介绍的是MATLAB中的运算符.分别有算术运算符,关系运算符和,逻辑运算符. 表3.1  算术运算符 运算符 说明 运算符 说明 + 加法 .\ 左除法 - 减法 \ 矩阵左除法 .* 乘法 .^ 求幂 * 矩阵乘法 ^ 矩阵求幂 ./ 右除法 .' 转置 / 矩阵右除法 ' 矩阵求秩,复数求共轭 表3.2  关系运算符 运算符 说明 函数 < 小于 lt(a,b) <= 小于等于 le(a,b) > 大于 gt(a,b) >= 大于等于 ge(a,b)

从零单排入门机器学习:Octave/matlab的常用知识之矩阵和向量

Octave/matlab的常用知识之矩阵和向量 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了.这次打算以该课程的作业为主线,对机器学习基本知识做一下总结.小弟才学疏浅,如有错误,敬请指导. Andrew的课程选了Octave/matlab为编程语言.他选择这个估计更多是考虑大众性,这门语言容易入门. 然后我觉得学会使用Octave/matlab还是挺有用的.一来是她天生是个数学工具,开始的研究阶段使用她最方便莫属,注意我这里所说的是研究阶段,商用

Matlab中函数句柄@的作用及介绍

问:[email protected](x)acos(x)表示什么意思?其中@代表什么?答:表示f为函数句柄,@是定义句柄的运算符.[email protected](x)acos(x) 相当于建立了一个函数文件:% f.mfunction  y=f(x)y=acos(x); 若有下列语句:[email protected](x)1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2); 则相当于建立了一个函数文件: % xsqual.m fun