前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Matlab学习笔记

Matlab学习笔记

作者头像
ttony0
发布于 2022-12-26 10:36:57
发布于 2022-12-26 10:36:57
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

指令

>> 表达式 ;:不显示运算结果(指令之后加上分号;,不显示计算结果。) >> clc:清屏

算术运算

  • 三角函数:sin(),cos(),tan()
  • 开方:sqrt()
  • 对数:log(),log2(),log10()
  • e:exp(1)

变量

变量:大小写敏感,以字母开头,关键词不能作为变量名。声明方式:>> A=10 >> who:查看变量信息 >> whos:查看变量详细信息 >> clear Variable移除变量Variable >> clear:清除所有变量

变量优先级:

  • Variable
  • Built-in function
  • Subfunction
  • Private function: • MEX-file • P-file • M-file

关键词

预定义变量名

含义

ans

计算结果变量名

pi

Π

eps

计算机最小数,当数字小于该值,认为为0(2.2204e-016)

inf/Inf

正无穷

NaN/nan

not a number,常为0/0、∞/∞

i/j

虚数单位,$\sqrt{-1}$

>> iskeyword:查看关键词

格式设定

Style

Result

Example

short

Short, fixed-decimal format with 4 digits after thedecimal point.

3.1416

long

Long, fixed-decimal format with 15 digits after the decimalpoint fordouble values, and 7 digits afterthe decimal point for single values.

3.141592653589793

shortE

Short scientific notation with 4 digits after thedecimal point.

3.1416e+00

longE

Long scientific notation with 15 digits after thedecimal point fordouble values, and 7 digits after the decimal point for single values.

3.14159265358979e+00

bank

Currency format with 2 digits after the decimalpoint.

3.14

hex

Hexadecimal representation of a binary doubleprecisionnumber.

400921fb54442d18

rat

Ratio of small integers.

355/113

>> format Style:设定数字显示格式

向量、矩阵

向量输入: >> A=[1 2 3 4]

>> A=[1;2;3;4]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = [
1 2 3 4;
5 6 7 8;
9 10 11 12;
]

A=\begin{bmatrix}a_{11} & a_{12} & \cdots & a_{1n} \ a_{21} & a_{22} & \cdots & a_{2n} \ \cdots & \cdots & \cdots & \cdots\ a_{n1} & a_{n2} & \cdots & a_{nn}\end{bmatrix}

矩阵元素:先行后列(元素从1开始)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A(1,2)=2
A(4)=2
A([1 2 4])=[1 5 2]
A([1,2;1,2])=[1 5;1 5]
A([1 2],[1 2])=[1 2;5 6]
//第1、2行和第1、2列的交集

Colon Operator

有向图、无向图

在 MATLAB 中,graphdigraph 函数用于构建表示无向图有向图的对象。

创建图的主要方式包括使用邻接矩阵或边列表。

邻接矩阵

要在 MATLAB 中构建无向图,可以输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = [
0 1 2;
1 0 3; 
2 3 0
]
node_names = {'A','B','C'}
G = graph(A,node_names)

边列表

边列表通过列举边来表示一个图,但如果该图有断开的节点,边列表中将不会列出这些节点,需要单独指定它们。

在 MATLAB 中,边列表按列划分为源节点和目标节点。对于有向图,边的方向(从源到目标)很重要;但对于无向图,源节点和目标节点是可以互换的。

使用边列表构建该图的一种方法是,对源节点、目标节点和边权重使用单独的输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> source_nodes = {'A','A','B'};
>> target_nodes = {'B','C','C'};
>> edge_weights = [1 2 3];
>> G = graph(source_nodes, target_nodes, edge_weights);
//起点、终点、(边的权值:可选)

下面可以创建一个有向图。st 中的对应元素用于定义图中每条边的源节点和目标节点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> s = [1 1 2 2 3];
>> t = [2 4 3 4 4];
>> G = digraph(s,t)

图的属性编辑、查看

构建图 G 后,可以通过G.Nodes 查看节点。通过将变量 Name 添加到 G.Nodes 表中来向图中添加节点名称。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> G.Nodes.Name = {'First' 'Second' 'Third' 'Fourth'}';

也可以使用命令 G.Edges 查看边(源节点、目标节点、权值)。这些边在 G.Edges 中的顺序首先按源节点排列,其次按目标节点排列。对于无向图,索引较小的节点列为源节点,索引较大的节点列为目标节点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> P.Edges

ans =

  6×2 table

     EndNodes     Weight
    __________    ______

    'A'    'B'    1     
    'A'    'C'    2     
    'B'    'A'    1     
    'B'    'C'    3     
    'C'    'A'    2     
    'C'    'B'    3 

添加自定义属性

原则上,我们可以将任何变量添加到 G.NodesG.Edges 中,来定义图节点或边的属性。

例如,可以向 G.Edges 添加名为 Power 的变量,来指示每条边是 'on' 还是 'off'

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> G.Edges.Power = {'on' 'on' 'on' 'off' 'off'}';
>> G.Edges
ans=5×3 table
          EndNodes          Weight    Power
    ____________________    ______    _____

    'First'     'Second'      10      'on' 
    'First'     'Fourth'      20      'on' 
    'Second'    'Third'       30      'on' 
    'Second'    'Fourth'      40      'off'
    'Third'     'Fourth'      50      'off'

图节点 ID

默认情况下,系统会对使用 graphdigraph 创建的图的所有节点进行编号,编号从1开始。因此,可以通过数值节点索引(即编号)来引用它们。

如果图具有节点名称('A'),则还可以使用节点名称来表示图中的节点。因此,可以通过节点索引或节点名称来表示图中的已命名节点。

常用函数

图的常用函数如下:

函数

功能

addedge

在图中添加一条或多条边

rmedge

从图中删除一条或多条边

addnode

在图中添加一个或多个节点

rmnode

从图中删除一个或多个节点

findnode

查找图中的特定节点

findedge

查找图中的特定边

numnodes

计算图中的节点数

numedges

计算图中的边数

findnode

查找图中的特定节点

findedge

查找图中的特定边

添加节点

在G中添加五个节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> G = addnode(G,5)
G = 
  graph with properties:

    Edges: [4x1 table]
    Nodes: [9x0 table]

删除节点

删除节点 3、5 和 6,对图中剩余的六个节点重新进行编号,以反映新的节点数量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> G = rmnode(G,[3 5 6])
G = 
  graph with properties:

    Edges: [2x1 table]
    Nodes: [6x0 table]

添加边

使用 addedgeG 添加两条边。第一条边位于节点 1 和节点 5 之间,第二条边位于节点 2 和节点 5 之间。该命令将向 G.Edges 添加两个新行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> G = addedge(G,[1 2],[5 5]) //(图,起点,终点)
G = 
  graph with properties:

    Edges: [4x1 table]
    Nodes: [6x0 table]

删除边

使用 rmedge 删除节点 1 和节点 3 之间的边。。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> G = rmedge(G,1,3)
G = 
  graph with properties:

    Edges: [3x1 table]
    Nodes: [6x0 table]

查找边

确定节点 1 和 5 之间的边的边索引。边索引 eiG.Edges 中的行号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> ei = findedge(G,1,5)
ei = 2

查找节点

在图中添加节点名称,然后确定节点 'd' 的节点索引。数值节点索引 niG.Nodes 中的行号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> G.Nodes.Name = {'a' 'b' 'c' 'd' 'e' 'f'}';
>> ni = findnode(G,'d')
ni = 4

图的绘制

我们使用 plot 函数绘制 graphdigraph 对象。

默认情况下,plot 会检查图的大小和类型,以确定要使用的布局。

如果调用 plot 并指定输出参数,则此函数将返回 GraphPlot 对象的句柄。

随后,我们可以使用该对象调整绘图的属性。例如,可以更改边的颜色或样式、节点的大小和颜色等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> A = [
0 1 2;
1 0 3; 
2 3 0
];
>> G=graph(A) //创建3x3无向图
>> G.Nodes.Name = {'First' 'Second' 'Third' }';//节点命名
>> p=plot(G) //绘图

同时,我们可以看到对象句柄的属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  GraphPlot - 属性:

     NodeColor: [0 0.4470 0.7410] 
    MarkerSize: 4
        Marker: 'o'
     EdgeColor: [0 0.4470 0.7410]
     LineWidth: 2
     LineStyle: '-'
     NodeLabel: {'First'  'Second'  'Third'}
     EdgeLabel: {}
         XData: [-0.3454 -0.7305 1.0759]
         YData: [1.0429 -0.8206 -0.2223]
         ZData: [0 0 0]

GraphPlot 属性控制所绘制图的外观和行为。通过更改属性值,可以修改图显示的各个方面。以下列出几个比较简单的属性,具体可查阅GraphPlot属性

NodeLabel -节点标签,EdgeLabel-边标签:用于显示边、节点相关信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> plot(G,'NodeLabel',G.Nodes.Name) 
//将节点名称作为其标签
>> plot(G,'EdgeLabel',G.Edges.Weight)
//将边标签指定为权值(即显示权值)

ShowArrows - 切换显示有向边上的箭头,指定为 ‘on’ 或 ‘off’。

对于有向图,默认值为 ‘on’,即显示箭头,但您可以指定值 ‘off’,以隐藏有向边上的箭头。对于无向图,ShowArrows 始终为 ‘off’。

颜色名称

短名称

RGB 三元组

十六进制颜色代码

外观

'red'

'r'

[1 0 0]

'#FF0000'

'green'

'g'

[0 1 0]

'#00FF00'

'blue'

'b'

[0 0 1]

'#0000FF'

'cyan'

'c'

[0 1 1]

'#00FFFF'

'magenta'

'm'

[1 0 1]

'#FF00FF'

'yellow'

'y'

[1 1 0]

'#FFFF00'

'black'

'k'

[0 0 0]

'#000000'

'white'

'w'

[1 1 1]

'#FFFFFF'

突出显示最短路径

以红色高亮显示沿此路径的边,并增大路径的节点的大小。输入如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p=plot(G)
highlight(p,[1,2])
highlight(p,[1,2],'EdgeColor','r')

绘图模板

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A=[
1 0 3;
2 0 1;
3 3 1;
]
G=digraph(A,{'A','B','C'})
p=plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',0.5)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s = {'A','A','B'}
t = {'B','C','C'}
G = graph(s, t)
p=plot(G)


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
MySQL 多表查询与复杂查询技巧实战
实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询。
用户11286421
2025/03/24
2210
MySQL 多表查询与复杂查询技巧实战
数据库MySQL学习——内含34道MySQL练习题及答案
DML(数据操作语言):insert delete update,对表中数据进行增删改
全栈程序员站长
2022/09/30
3.4K0
SQL 窗口函数
MYSQL 从 8.0.2 版本起开始支持窗口函数,那么在窗口函数没出来之前,我们要实现类似的功能该怎么做呢?
白日梦想家
2020/07/18
7810
SQL 窗口函数
MySQL复合查询全解析:从基础到多表关联与高级技巧
这里‘J_’和‘J%’的主要区别在于它们所代表的字符串匹配模式的严格程度和范围。‘J_’更为严格,只匹配特定长度的字符串;而‘J%’则更为灵活,能匹配任意长度的字符串(只要以‘J’开头)。 
用户11316056
2025/05/05
1210
MySQL复合查询全解析:从基础到多表关联与高级技巧
hive 的order by ,sort by,distribute by,cluster by
order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间,在生产环境中遇到数据量较大的情况,一般无法成功。
用户1217611
2023/03/06
6410
SQL员工部门表综合查询60题
CREATE DATABASE oa; USE oa; CREATE TABLE dept( deptno INT PRIMARY KEY, dname VARCHAR(20), loc VARCHAR(20) ) DROP TABLE emp CREATE TABLE emp( empno INT PRIMARY KEY, ename VARCHAR(20) NOT NULL, job VARCHAR(20) CHECK (job IN ('CLERK','SALESMAN','MANAGER','
Albert陈凯
2018/04/04
5.4K0
SQL综合实战
JanYork_简昀
2024/03/07
1530
使用Oracle中的emp,dept来学习Django ORM
学习Django的时候,总是觉得这部分内容和实际的应用有一定的差别或者距离。一方面Django自带的ORM对于底层数据库来说是一种适配性很强的组件,可以不强依赖于某一种数据库,sqlite,MySQL,Oracle,PG等等都可以,学习起来需要一定的周期。另外一方面是因为这种方式是通用的API,一下子没有了SQL语句,要理解并接受这种思想,需要一点时间,对很多DBA来说需要适应。第三点就是没有融会贯通,好像看明白了,但是实际写的时候发现还是摸黑,不知道从何入手。 所以我就换个思路,从数据库
jeanron100
2018/03/22
9480
使用Oracle中的emp,dept来学习Django ORM
【MySQL】查询语法简介
本篇文章主要简介下MySQL中where,group by ,order by ,limit,join,union ,union all,子表等查询语法。
MySQL技术
2019/09/08
1.8K0
初识MySQL · 复合查询(内外连接)
在前文我们学习了MySQL的基本查询,就是简单的套用了select语句,最多不过是加上了一些聚合函数,使用了group by或者是having等。
_lazy
2025/04/11
1890
初识MySQL · 复合查询(内外连接)
《数据库查询:解锁数据宝藏的魔法之钥》
MySQL查询是一种用于检索、筛选和分析数据的数据库操作技术。作为一个强大的关系型数据库管理系统(RDBMS),MySQL支持多种查询方法,包括使用SQL(Structured Query Language)编写的查询语句。
杨不易呀
2023/09/27
2490
《数据库查询:解锁数据宝藏的魔法之钥》
Mysql 排序语句
当前有这么一张表,要求按照SAL的降序排,当SAL相同的时候,再按照名字的升序排列
吃猫的鱼Code
2023/07/09
4810
MySQL基本查询
MySQL中的基本查询,即CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)
二肥是只大懒蓝猫
2023/10/13
4040
MySQL 的 Full Join 的实现
截止当前最新版本 8.0.19,MySQL 尚未支持 Full Join(全外连接),但我们可以使用其它方式实现 Full Join 的效果。
白日梦想家
2020/07/18
12.4K0
MySQL 的 Full Join 的实现
day43_Oracle学习笔记_02
八、子查询 示例代码如下: 子查询.txt SQL> --rownum 行号 SQL> select rownum,empno,ename,sal from emp;     ROWNUM      EMPNO ENAME             SAL                                                                                                                                
黑泽君
2018/10/11
7980
day43_Oracle学习笔记_02
【MySQL】九、表的内外连接
​ 在 mysql 中,内连接(inner join)和外连接(left jon、right join 和 full join)是用于将多个表中的数据进行关联的操作。
利刃大大
2025/05/22
880
mysql练习(含答案)
表结构 DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; ##部门表 #DROP IF EXISTS TABLE DEPT; CREATE TABLE DEPT( DEPTNO int PRIMARY KEY,##部门编号 DNAME VARCHAR(14) , ##部门名称 LOC VARCHAR(13) ##部门地址 ) ; INSERT INTO DEPT VALUES (10,'ACCOU
Java学习
2018/04/17
2.6K0
mysql练习(含答案)
六、Hive中的内部表、外部表、分区表和分桶表
在Hive数据仓库中,重要点就是Hive中的四个表。Hive 中的表分为内部表、外部表、分区表和分桶表。
润森
2022/08/18
2.2K0
六、Hive中的内部表、外部表、分区表和分桶表
Hive案例04-员工部门表综合案例
1. 数据说明 (1) dept表 hive> select * from dept; # deptno(部门编号) dname(部门名称) loc(部门所在地区) 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES
CoderJed
2018/09/13
9080
mysql最常用的函数只需一篇文章
select count(*)|count(列名) from table_name where……
秋名山码神
2022/12/13
3780
mysql最常用的函数只需一篇文章
相关推荐
MySQL 多表查询与复杂查询技巧实战
更多 >
LV.7
河南悦影医药科技有限公司总经理
目录
  • 指令
  • 算术运算
  • 变量
  • 关键词
  • 格式设定
  • 向量、矩阵
  • 有向图、无向图
    • 邻接矩阵
    • 边列表
    • 图的属性编辑、查看
    • 添加自定义属性
    • 图节点 ID
    • 常用函数
    • 添加节点
    • 删除节点
    • 添加边
    • 删除边
    • 查找边
    • 查找节点
    • 图的绘制
    • 突出显示最短路径
    • 绘图模板
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档