基本概念

整数类型

  • 相同整数类型相乘还是整数
  • 整数与浮点数相乘是这种整数类型
  • 不同整数类型不能相乘,除非强制类型转换

整数与整数相乘:

>> x = uint32(120);
>> y = uint32(5);
>> z = x * y
z =
600
>> whos
Name Size Bytes Class Attributes x 1x1 4 uint32
y 1x1 4 uint32
z 1x1 4 uint32

整数与浮点数相乘:

>> z = x * 1.2
z =
144
>> whos
Name Size Bytes Class Attributes x 1x1 4 uint32
z 1x1 4 uint32

浮点类型

分为单精度和双精度 MATLAB中默认的数值类型为双精度浮点类型

>> x = 100
x =
100
>> whos
Name Size Bytes Class Attributes x 1x1 8 double

注意:

双精度:

  • 与逻辑型、字符型进行运算时,返回结果为双精度浮点型
  • 与整数运算时返回整数类型
  • 与单精度运算时,返回单精度

单精度

  • 与逻辑型、字符型运算时返回单精度
  • 不能与整数类型进行运算
>> x = single(1.2)
x =
1.2000
>> y = uint8(10)
y =
10
>> z = x * y
错误使用 .*
整数只能与相同类的整数或标量双精度值组合使用。

复数

real(z)          %返回z的实部
imag(z) %返回z的虚部
abs(z) %返回z的幅度
angle(z) %返回z的相角
conj(z) %返回z的共轭
complex(a,b) %以a为实部,b为虚部生成复数a + jb
x = 1 + 2i
real(x)
imag(x)
abs(x)
angle(x)
conj(x)
complex(1,2) x =
1.0000 + 2.0000i
ans =
1
ans =
2
ans =
2.2361
ans =
1.1071
ans =
1.0000 - 2.0000i
ans =
1.0000 + 2.0000i

无穷量(Inf)与非数值量(NaN)

  • Inf:0做了分母或者超出了双精度浮点数的表示范围
  • NaN(Not a Number):0/0或者Inf/Inf等非正常运算产生的
    • 两个NaN是不相等的
>> 1/0
ans =
Inf
>> log(0)
ans =
-Inf
>> 0/0
ans =
NaN

数值的显示格式

format short       %5位定点显示格式,为MATLAB的默认显示格式
format short e %5位科学计数法显示
format long
format long e %15位
format bank %保留两位小数
format rat %有理分数的近似显示
>> x = 1.2
x =
1.2000
>> format long
>> x
x =
1.200000000000000
>> format bank
>> x
x =
1.20
>> format rat
>> x
x =
6/5
>> format short
>> x
x =
1.2000

format只改变数值的显示格式,数值运算不受影响,按双精度浮点运算进行

确定数值类型的函数

calss(A)                      %返回A的类型名称
isa(A,'class_name') %判断A是否为calss_name类型
isnumeric(A) %判断A是否为一个数值类型
isinteger(A) %是否为整数
isfloat(A) %是否为浮点类型
isreal(A) %是否为实数
isnan(A) %是否为NaN型
isInf(A) %是否为无穷量
isfinite(A) %是否有限

常见常量

i或j         %虚数单位
pi %圆周率
eps %浮点数的最小分辨率,当某数的绝对值小于次量是认为为0,
realmin %最小浮点数,2^-1022
realmax %最大浮点数,2^1023

字符串

字符串在MATLAB中用单引号标示的,字符串的存储是按字符串中的字符单个存储的,存储的是它们各自的ASCII码值,字符串可以看做是一个字符数组。

运算符

算术运算符

矩阵算术运算符

运算符 说明
+ 矩阵加法
- 矩阵减法
* 矩阵乘法
/ 右除 X * B = A 的解,即X = A/B
\ 左除A * X = B的解,即X = A\B
^ 乘幂
' 矩阵共轭
>> A = [1 2;3 4]
A =
1 2
3 4
>> B = [5 6;7 8]
B =
5 6
7 8
>> C = A*B
C =
19 22
43 50
>> C = A + B
C =
6 8
10 12
>> C = A - B
C =
-4 -4
-4 -4
>> C = A/B
C =
3.0000 -2.0000
2.0000 -1.0000
>> C = A\B
C =
-3 -4
4 5
>> C = A'
C =
1 3
2 4

数组算术运算符

由于数组的加法和减法与矩阵相同,所以不多加赘述,矩阵的运算就是线代书定义的那样,是把矩阵看做是一个整体单位,而两个数组的运算是两数组相应位置上元素的运算

运算符 说明
.* 数组乘法,C = A .* B C(i,j)=A(i,j)*B(i,j)
./ 数组右除,C = A ./ B C(i,j)=A(i,j)/B(i,j)
.\ 数组左除,C = A .\ B C(i,j) = B(i,j)/A(i,j)
.^ 数组乘幂,C=A .^ B C(i,j)=A(i,j) ^B(i,j)
.' 将数组进行转置,复数元素不做共轭
>> A
A =
1 2
3 4
>> B
B =
5 6
7 8
>> C = A .* B
C =
5 12
21 32
>> C = A ./ B
C =
0.2000 0.3333
0.4286 0.5000
>> C = A .\ B
C =
5.0000 3.0000
2.3333 2.0000
>> C = A .^ B
C =
1 64
2187 65536
>> C = A.'
C =
1 3
2 4

二维数组的表示在表示上与矩阵是一样的,所以在形式上无法区分,不同是他们之间的运算有所不同

关系运算符

运算符 示例
< A < B
<= A <= B
> A > B
>= A >= B
== A == B
~= A ~= B
  1. A、B都是标量,结果是1或0的标量,A>B则为1;反之为0。
  2. A、B若有一个为标量,另一个为数组,则将标量与数组各元素比较,产生一个与运算数组行列相同的数组,数组元素或0或1。
  3. A、B均为数组时,A、B的行列必须相同,A、B数组的对应元素进行比较,产生一个与运算数组同规模的数组,数组元素或0或1。
  4. == 和 ~=对参与比较的量同时比较实部和虚部,其他运算只比较实部。
>> A
A =
1 2
3 4
>> B
B =
5 6
7 8 C = 2 == 3 %标量之间的比较
C = A > 2 %标量与数组的比较
C = A > B %数组之间的比较 C =
0
C =
0 0
1 1
C =
0 0
0 0

说明:

  • 关系运算虽然看做是矩阵的关系运算,但看做数组运算更加合理,因为关系运算时一对一的运算结果。

逻辑运算符

运算符 名称
&
|
~
&& 先决与
|| 先决或

具体用法其实与关系运算符的法则一样

>> C = (A < B)&(A ~= B)
C =
1 1
1 1

说明:

  • 先决与,只要运算符的左边为1才继续与该符号右边的量做逻辑运算
  • 先决或,当运算符左边为1时,就不需继续与该符号右边的量做逻辑运算,直接得出结果为真
  • 先决与、先决或只是针对标量的运算

最新文章

  1. Java集合概述
  2. mybatis的逆向工程
  3. linux下安装tomcat,部署项目
  4. Zephyr-MQTT
  5. web前端面试试题总结---css篇
  6. operator= 复制操作符的意外
  7. 上curl java 模拟http请求
  8. 基于Servlet、JSP、JDBC、MySQL登录模块(包括使用的过滤器和配置)
  9. Spring xml中进行面向切面的配置
  10. Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: javax/transaction/Synchronization
  11. 完善tab页面定位
  12. Java数据结构和算法(四)——栈
  13. spring自带定时器
  14. [Zabbix3.0 ]添加Nginx监控
  15. MT【297】任意四边形的一个向量性质
  16. Confluence 6 白名单表达式类型
  17. 动态库DLL中类的使用
  18. toggle 1.9 以后就被删除了
  19. linux php.ini文件没有指向 不生效
  20. 【转】python文件和目录操作方法大全(含实例)

热门文章

  1. celery 使用 - 3
  2. [C++_QT] 同步方式提交GET和POST请求
  3. leetcode929 Unique Email Addresses
  4. static静态变量使用@Value注入方式
  5. 分布式一致性协议 --- Paxos
  6. MySQL8.0.11安装后,使用CMD无法启动mysql服务
  7. 吴裕雄--天生自然TensorFlow2教程:函数优化实战
  8. Docker 安装 Kibana
  9. sqlserver数据将多个表或视图的数据合并到一个表或视图里的sql语句
  10. Redis为什么要自己实现一个SDS