01 MATLAB基本概念
基本概念
整数类型
- 相同整数类型相乘还是整数
- 整数与浮点数相乘是这种整数类型
- 不同整数类型不能相乘,除非强制类型转换
整数与整数相乘:
>> 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 |
- A、B都是标量,结果是1或0的标量,A>B则为1;反之为0。
- A、B若有一个为标量,另一个为数组,则将标量与数组各元素比较,产生一个与运算数组行列相同的数组,数组元素或0或1。
- A、B均为数组时,A、B的行列必须相同,A、B数组的对应元素进行比较,产生一个与运算数组同规模的数组,数组元素或0或1。
- == 和 ~=对参与比较的量同时比较实部和虚部,其他运算只比较实部。
>> 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时,就不需继续与该符号右边的量做逻辑运算,直接得出结果为真
- 先决与、先决或只是针对标量的运算
01 MATLAB基本概念的更多相关文章
- 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点
087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
- MATLAB基本概念和变量
基本概念 1.x=int8(129)=>x=127 (带符号8位整数,最大值为127) x=uint8(129)=>x=129 (无符号型,最大值为255) 2.class函数得 ...
- Matlab图像处理(01)-Matlab基础
枫竹梦对于Matlab几乎是零基础,只是在上学的时候稍稍接触一点,万万没有想到现在还能用到Matlab.进入正题>>> 图像的基本概念 一幅图像可以被定义为一个二维函数f(x,y), ...
- Kvm --01 虚拟化基础概念
目录 1. 虚拟化基础概念 01. 什么是虚拟化? 02. 为什么要用虚拟化? 03. 虚拟化在企业中的应用场景? 04. 虚拟化软件介绍 05. Kvm介绍 2. 安装部署Kvm 3. Kvm虚拟机 ...
- Java多线程系列--“基础篇”01之 基本概念
多线程是Java中不可避免的一个重要主体.从本章开始,我们将展开对多线程的学习.接下来的内容,是对“JDK中新增JUC包”之前的Java多线程内容的讲解,涉及到的内容包括,Object类中的wait( ...
- (专题一)01 matlab基础
功能区:主页,绘图,应用程序 当前文件夹工具栏 命令行窗口:输入命令,按下回车键,会在后面显示执行后的命令 如果命令行很长可以分两行来写,用“...”做续行符 建立当前文件夹:可以用cd命令 例如在d ...
- 多线程系列 - 基础篇01 - 线程基本概念 & 线程优先级 & 守护线程 60%
1.什么是线程 将线程理解为轻量级进程,它与进程的最大的区别是: 多个线程共享一个进程资源: 对于OS的许多资源的分配和管理(如内存)通常都是进程级别的,线程只是os调度的最小单位: 相对于进程来说更 ...
- 01 http协议概念及工作流程
一:HTTP协议 重要性: 无论是以后用webserverice ,还是用rest做大型架构,都离不开对HTTP协议的认识. 甚至可以简化的说: webservice = http协议+XML Res ...
- matlab vs python
(参考)从下图可以清晰看到matlab和python之间的区别 Python是一种编程语言,但与其他变成语言的不同在于:python具有许多的扩展库(通过import引入) Matlab是集合计算环境 ...
随机推荐
- 国密SM9算法C++实现(Linux)
首先参考 Linux下编译并使用miracl密码库 该博文在linux下编译Miracl库. 编译完了,自然是要用的,下面介绍两种在C程序中使用miracl库的方法. 方法一: 1. 源码编译完后的必 ...
- Java面向对象编程 -6.2
数组的引用传递 通过数组的基本定义可以发现,在数组使用的过程中依然需要使用new进行内存空间的开辟,同理,那么也一定存在有内存的关系匹配问题. 但是数组本身毕竟属于引用数据类型,那么既然是引用数据类型 ...
- 【PAT甲级】1094 The Largest Generation (25 分)(DFS)
题意: 输入两个正整数N和M(N<100,M<N),表示结点数量和有孩子结点的结点数量,输出拥有结点最多的层的结点数量和层号(根节点为01,层数为1,层号向下递增). AAAAAccept ...
- jenkins介绍及部署tomcat环境、部署Maven项目及密码忘记修改
安装配置jenkins: jenkins安装方式一:war包 1.先安装tomcat将jenkins,war直接放到webapps目录下 2.通过java-jar jenkins.war --http ...
- python练习:斐波那契数列的递归实现
python练习:斐波那契数列的递归实现 重难点:递归的是实现 def fib(n): if n==0 or n==1: return 1 else: return fib(n-1)+fib(n-2) ...
- STUN和TURN协议解析
在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信,而不需要 ...
- U2000解决备份:服务器不可达、FTP/TFTP/SFTP IP地址与网管地址不一致
只需要将一下几点设置到位这些问题基本解决: 设置->网元软件管理->FTP设置 如果你的U2000服务器和OLT都在一个内网,那么就IP1和IP2就都输入U2000服务器的内网IP,否则按 ...
- ES6:let 与 const
在ES6中,let 用来定义变量,const 用来定义常量 事实上var可以看成是js语言设计上的错误,但是不能移除,因为需要向后兼容 于是提出了一个新的关键字let,可以将let看成更完美的var ...
- 9000端口号被上一个ip地址占用,需要reboot才可以恢复正常ip端口问题
比如查看端口# lsof -i:9000 本机ip已经修改为192.168.0.50,而经过# lsof -i:9000查看到,端口是这样的,192.168.0.88:9000,显示的还是上一个ip的 ...
- WARNING: bridge-nf-call-iptables is disabled解决
执行docker info出现如下警告 WARNING: bridge-nf-call-iptables is disabledWARNING: bridge-nf-call-ip6tables is ...