当前位置: 首页 > news >正文

零基础入门MATLAB(一篇十分钟)

目录

一、复数

二、取整函数

三、无穷量(Inf)和非数值量(NaN)

四、逻辑类型

五、字符和字符串

六、函数句柄

七、结构体

八、数组类型

九、单元数组

十、map容器类型

参考《MATLAB R2020a 完全自学一本通》


一、复数

复数包括实部和虚部,MATLAB中默认使用字符i或j作为虚部标致

例如:

MATLAB库函数中关于复数的计算如下表

MATLAB库函数中关于复数的相关函数
函数说明函数说明
real(z)返回复数z的实部image(z)返回复数z的虚部
abs(z)返回复数z的模angle(z)返回复数z的的辐角
conj(z)返回复数z的共轭复数complex(a,b)以a为实部、b为虚部创建复数

二、取整函数

函数运算法则示例
floor(x)向下取整

floor(1.2)=1

floor(2.5)=2

floor(-2.5)=-3

ceil(x)向上取整

ceil(1.2)=2

ceil(2.5)=3

ceil(-2.5)=-2

round(x)

取最接近的整数

如果小数部分是0.5,则向绝对值大的方向取整

round(1.2)=1

round(2.5)=3

round(-2.5)=-3

fix(x)向0取整

fix(1.2)=1

fix(2.5)=2

fix(-2.5)=-2

三、无穷量(Inf)和非数值量(NaN)

     MATLAB中使用 Inf 和 -Inf 来分别代表正无穷量和负无穷量,NaN表示非数值。正负无穷量的产生一般是由于运算溢出,产生了双精度浮点数数值范围的结果;非数值则是由于 0/0 或 Inf/Inf 类型的非正常运算而产生,这两个NaN彼此是不相等的。

     除了异常运算结果,MATLAB也提供了特定函数Inf和NaN来创建指定数值类型浮点无穷量和非数值量,生成结果默认为双精度浮点数类型。还有一种特殊的指数类型的数据叫做非数,通常表示运算得到的数值结果超出了运算范围。非数的实部用NaN表示,虚部用InF表示。

例如:

四、逻辑类型

MATLAB中除了支持关系运算外还支持逻辑运算。

     MATLAB中把任何非零数值当作真,把零当作假。所有关系和逻辑类型的输出:对于真,输出1;对于假,输出为0。

MATLAB中的关系操作符
关系操作符说明
<小于
<=小于或等于
>大于
>=大于或等于
==等于
~=不等于

MATLAB中的关系操作运算符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量。在后一种情况中,标量和数组中的每一个元素相比较,结果和数组大小一样。

例如:

逻辑运算符提供了一种组合或否定关系表达式,如下表。

MATLAB中的逻辑运算符
逻辑运算符说明
&
|
~

例如:

五、字符和字符串

    MATLAB中一个字符串是存储在一个行向量中的文本,这个行向量中的每一个元素代表一个字符。因此可以通过下标对字符串中的任何一个元素进行访问。字符矩阵也可以通过下标索引进行访问,但是矩阵的每行字符数必须相同

①字符属性示例,使用size() 获得字符长度

字符串中的每个字符是数组中一个元素,字符串的存储要求每个字符8字节,之所以不要求1字节是因为对字符串保持同样的数据结果可以简化MATLAB的内部数据结构。

②字符串的ASCII表达,使用abs() 获得每个字符ASCII码

③字符串数组是索引示例

 ④字符串中的单引号

在字符串中添加单引号需要使用转义字符 ”  '   "

⑤ 字符串的链接,使用 [  ] 连接两个字符串

六、函数句柄

在MATLAB中,对函数调用分为直接调用和间接调用。

  • 直接调用函数,被调用函数称为子函数。但是子函数只能被与其M文件同名的主函数或在M文件中的其他函数调用,一个文件中只能有一个主函数
  • 函数句柄提供了一种间接调用的方法,创建函数句柄需用到操作符@。MATLAB库函数中的各种内部函数都可以创建函数句柄,从而通过函数句柄实现对这些函数的间接调用。
Funciton_Handle = @Function_Filename;
  • Function_Filename是函数所对应的M文件的名称或MATLAB内部函数的名称
  • @是句柄创建操作符
  • Function_Handle变量保存这一函数句柄

函数句柄的创建与调用

MATLAB库函数中提供大量处理函数句柄的操作函数,如下表:

函数句柄的简单操作函数
函数名称函数功能
function(funhandle)返回一个结构体,存储函数名称、函数类型(simple或overloaded),以及函数M文件的位置
func2str(funhandle)将函数句柄转换为函数名称字符串
str2func(str)将字符串所代表的函数转换为函数句柄
save filename.mat funhandle将函数句柄保存在*.mat文件中
load filename.mat funhandle将*.mat文件中存储的函数句柄加载到工作区
isa(var,'function_handle')检测变量var是否是函数句柄
isequal(function,funhandle)检测两个函数句柄是否对应同一个函数

函数句柄基本操作:

七、结构体

    结构体相当于一个数据容器,把多个相关链的不同类型的数据封装在一个结构体对象中。MATLAB创建结构体有两种方法,一种是通过赋值语句给结构体的字段赋值,另一种是使用结构体创建函数struct。两种方法具体操作如下:

①通过字段创建结构体

在字段赋值时,没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段的赋值,还可以创建任意尺寸的结构体数组。

②利用struct函数创建结构体

struct函数的语法形式

strArray = struct('field' , val , 'field2' , var2, ..... 'fieldn' , varn)

示例1:

示例2:

八、数组类型

在MATLAB中进行运算的所有数据类型,都是安装数组及矩阵的形式进行存储和运算。数组强调元素对元素的运算,而矩阵则采用线性代数的运算方式。数组的定义是广义的,数组的元素可以是任意数据类型,例如可以是数值、字符串、指针等。

①对变量赋值创建数组

②使用“:”冒号创建等差数组

语法格式 :

Array = i :j :k

创建从i 开始、步长为j、到k结束的数组序列。省略j则表示默认步长为1

 ③使用linspace函数创建等差数组

语法格式 如下:

Array = linspace (a , b , n )

 在区间 [ a , b ]上创建 n 个元素向量

④创建空数组

九、单元数组

单元(Cell)数组是一种广义矩阵。组成单元数组的每一个元素称为一个单元。每一个单元可以包括一个任意数组(如数值数组,字符串数组,结构体数组或另外一个单元数组),因此每一个单元的尺寸和内存占用空间可能不同。

单元数组的创建有两种方式:一种是使用赋值语句创建单元数组,另一种是使用cell函数创建单元数组。

①创建单元数组

使用逗号“ ,”或空格分隔每一个单元,使用分号“ ;”来分行

②使用cell函数创建空单元数组

单元数组访问

对于 单元数组C,C(m,n)指的是单元数组中第m行第n列的单元

单元数组的操作,合并、删除、更改形状

①单元数组合并,使用 { }合并两个单元数组

③指定单元的删除

③ 使用reshape函数改变单元数组形状

语法格式如下

trimC = reshape( C , M , N )

将单元数组C改成一个具有M行N列的新单元数组。

 示例:

十、map容器类型

map是一种以“键值对”方式进行存储的容器,map的键(key)可以是数字也可以是字符串,map的数值就是map的数据(value)。一个map是MATLAB类的一个对象。map类具有下面3种属性:

map类的属性
属性说明默认值
Count表示map对象中“键值对”的总数0
KeyType表示map对象中包括的key的类型char
ValueType表示map对象中包括的数据类型any

①创建map对象

map是一个map类中的对象,又MATLAB中名为“容器”的一个包来定义,可以通过构造函数来创建,其语法形式如下(指定键的所有类型都必须一样)

mapObject = containers.Map({key1 , key2 , .....},{val1 , val2 , .....})

也可以创建一个空map对象,再通过点的方式赋值

②查看/读取map对象

通过keys函数和values函数可查看所有的map对象中包含的键和值

访问指定键所对应的值

如需对多个键访问,可以配合values函数使用

 ③编辑map对象

使用remove函数,删除map对象中的“键值对”

remove('mapname' , 'keyname')

添加keys/values对。

当向map对象中写入新元素时,需提供键名,而且该键类型必须和map中的其他键一致,语法格式如下

MapObject(newKeyName) = newValue

修改keys。如需在保持值不变对键名进行更改,则首先删除“键值对”,然后再添加

修改values。通过赋值操作,覆盖原有值。

参考《MATLAB R2020a 完全自学一本通》

相关文章:

  • 求最大公约数、最小公倍数、
  • 15、IOC 之ApplicationContext 的附加功能
  • Hive sql 行列转换(行转列,列转行)
  • 【MATLAB教程案例10】使用MATLAB自带的LDPC工具箱实现LDPC编译码误码率仿真
  • 小学数学学习:神奇的走马灯数 142857
  • 【OFDM系列6】MIMO-OFDM系统模型、迫零(ZF)均衡检测和最小均方误差(MMSE)均衡检测原理和公式推导
  • 点云处理简介
  • 跨域问题以及经过网关二次转发重复跨域
  • 自动控制原理9.2---线性系统的可控性与可观测性(上)
  • DOM事件流+阻止冒泡事件+dom包含
  • ZYNQ之GPIO机制
  • 第二章:Qt下载与安装 之 2.2 Qt安装
  • 一种基于堆的链式优先队列实现(使用golang)
  • 【笔记】文献阅读[YOLOV2]-YOLO9000: Better, Faster, Stronger
  • 【JVM基础】方法区
  • Android 架构优化~MVP 架构改造
  • chrome扩展demo1-小时钟
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • js写一个简单的选项卡
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • node 版本过低
  • PHP 的 SAPI 是个什么东西
  • Windows Containers 大冒险: 容器网络
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 高度不固定时垂直居中
  • 给github项目添加CI badge
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 缓存与缓冲
  • 深入浅出Node.js
  • 使用 @font-face
  • 微信开放平台全网发布【失败】的几点排查方法
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • elasticsearch-head插件安装
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.proxy和$.extend
  • (07)Hive——窗口函数详解
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (9)STL算法之逆转旋转
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (九十四)函数和二维数组
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET成年了,然后呢?
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /bin/rm: 参数列表过长"的解决办法
  • [ C++ ] STL---string类的使用指南