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

【复杂网络建模】——建模工具Matlab入门

目录

一、认识MATLAB

二、认识工具箱

三、基本操作和函数

3.1 算术操作符

3.2 数学函数

3.3 矩阵操作

3.4 索引和切片

3.5 逻辑操作

3.6 控制流程

3.7 数据输入输出

四、变量和数据类型

4.1 数值类型

4.2 整型

4.3 复数

4.4 字符串

4.5 逻辑类型

4.6 结构体(Structures)

4.7 单元格数组(Cell Arrays)

4.8 表格(Tables)

4.9 时间序列和日期时间

4.10 函数句柄

五、数组和矩阵运算

5.1 创建数组和矩阵

5.2 数组和矩阵的运算

5.3 数组和矩阵的索引

5.4 多维数组


一、认识MATLAB

MATLAB的产生是与数学计算紧密联系在一起的。1980年,美国新墨西哥州大学计算机系主任Cleve Moler在给学生讲授线性代数课程时,发现学生在高级语言编程上花费很多时间,于是着手编写供学生使用的Fortran子程序库接口程序,取名为MATLAB(即Matrix Laboratory的前三个字母的组合,意为“矩阵实验室”)。

二、认识工具箱

MATLAB拥有一个专用的家族产品,用于解决不同领域的问题,称之为工具箱(Toolbox)。工具箱用于MATLAB的计算和画图,通常是M文件和高级MATLAB语言集合,使用户可以方便地修改函数和源代码,或增加新的函数。用户还可以结合不同的工具箱中的技术来设计针对某个问题的解决方案。MATLAB每年都会完善或新增一些工具箱,因此,在一般情况下,工具箱的列表不是固定不变的。有关MATLAB工具箱的最新信息可以在 常见工具箱  中看到。常见的工具箱:

AI、数据科学和统计学

  • Deep Learning Toolbox
  • Statistics and Machine Learning Toolbox
  • Curve Fitting Toolbox
  • Text Analytics Toolbox

数学和优化

  • Optimization Toolbox
  • Global Optimization Toolbox
  • Symbolic Math Toolbox
  • Mapping Toolbox
  • Partial Differential Equation Toolbox

三、基本操作和函数

3.1 算术操作符

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • ^:幂运算
  • .*./.^:数组元素的乘法、除法和幂运算
% 加法
result = 3 + 5;% 矩阵元素乘法
A = [1 2; 3 4];
B = [2 0; 0 2];
C = A .* B;

3.2 数学函数

MATLAB提供了大量的内置数学函数,用于处理各种数学运算:

  • sqrt(x):计算x的平方根
  • abs(x):计算x的绝对值
  • sin(x)cos(x)tan(x):三角函数
  • exp(x):计算e的x次幂
  • log(x)log10(x):自然对数和以10为底的对数
  • round(x)floor(x)ceil(x):对x进行四舍五入、向下取整、向上取整
% 计算平方根
sqrtResult = sqrt(16);% 计算sin值
sinValue = sin(pi/2);% 计算e的幂
expValue = exp(1);

3.3 矩阵操作

MATLAB是矩阵实验室(Matrix Laboratory)的缩写,因此矩阵操作是它的强项:

  • [1 2 3]:创建行向量
  • [1; 2; 3]:创建列向量
  • A = [1 2 3; 4 5 6; 7 8 9]:创建矩阵
  • A':矩阵转置
  • inv(A):矩阵A的逆
  • det(A):矩阵A的行列式
  • eig(A):矩阵A的特征值和特征向量
% 创建矩阵
A = [1 2 3; 4 5 6; 7 8 9];% 矩阵转置
ATranspose = A';% 矩阵乘法
B = [9 8 7; 6 5 4; 3 2 1];
C = A * B;

3.4 索引和切片

  • A(1,2):访问矩阵A中第一行第二列的元素
  • A(:,1):访问A的第一列所有元素
  • A(1:3):访问A中前三个元素(如果A是向量)
% 访问特定元素
element = A(2, 3); % 访问A矩阵的第二行第三列的元素% 获取矩阵的一部分
subMatrix = A(1:2, 2:3); % 获取A矩阵的左上角2x2子矩阵

3.5 逻辑操作

  • ==~=:等于、不等于
  • <><=>=:小于、大于、小于等于、大于等于
  • &&||~:逻辑与、逻辑或、逻辑非

3.6 控制流程

  • ifelseelseif:条件语句
  • for:循环语句,用于重复执行代码块固定次数
  • while:当给定条件为真时,重复执行代码块

3.7 数据输入输出

  • loadsave:加载和保存数据文件
  • fprintfsprintf:格式化数据输出
  • input:从用户接收输入
% 逻辑操作
isEqual = (5 == 5); % 返回1(true)
isNotEqual = (5 ~= 4); % 返回1(true)% 条件语句
x = 5;
if x > 0disp('x is positive');
elseif x < 0disp('x is negative');
elsedisp('x is zero');
end

% for循环打印数字1到5
for i = 1:5disp(['i = ', num2str(i)]);
end% while循环,直到x小于1
x = 5;
while x >= 1disp(['x = ', num2str(x)]);x = x - 1;
end

 假设我们有一个名为data.txt的文本文件,内容为几行数字。 这里需要新建一个data.txt文件。

% 读取文件
data = load('data.txt');% 保存变量到文件
save('newData.txt', 'data');

四、变量和数据类型

在MATLAB中,变量用于存储数据,而数据类型决定了这些数据可以如何被处理和存储。了解MATLAB的基本变量和数据类型是进行有效编程的关键。以下是MATLAB中一些主要的变量类型和数据类型:

4.1 数值类型

  • 双精度(Double):MATLAB中的默认数据类型。用于表示带有小数点的数值,例如 x = 3.1415
  • 单精度(Single):用于存储单精度浮点数,可以通过 single 函数创建,例如 y = single(3.1415)

4.2 整型

MATLAB支持多种整型,包括 int8int16int32int64 及其无符号版本 uint8uint16uint32uint64。整型用于存储整数值,例如 z = int32(10)

4.3 复数

MATLAB可以直接处理复数,例如 z = 3 + 4i

4.4 字符串

MATLAB中的字符串是字符数组,用于表示文本。在MATLAB R2016b及以后的版本中,可以使用双引号创建字符串,例如 str = "Hello, MATLAB!"

4.5 逻辑类型

表示真(true)或假(false)的值,用于条件表达式和逻辑运算,例如 flag = true

4.6 结构体(Structures)

结构体是一种数据结构,可以包含不同类型的数据。例如,创建一个包含学生信息的结构体:student.name = "John Doe"; student.age = 21; student.grade = "A";

4.7 单元格数组(Cell Arrays)

单元格数组是一种特殊的数组,可以存储不同类型和大小的数据。通过花括号创建和索引,例如 C = {'Hello', [1, 2, 3], 3.14};

4.8 表格(Tables)

表格用于存储列变量形式的异质数据,是数据分析和处理的强大工具。例如,创建一个表格存储不同学生的信息:T = table({'John'; 'Jane'}, [21; 22], 'VariableNames', {'Name', 'Age'});

4.9 时间序列和日期时间

MATLAB提供了日期和时间的数据类型,如 datetime,用于处理日期和时间数据,例如 dt = datetime('now') 获取当前时间。

4.10 函数句柄

函数句柄允许将函数作为参数传递给其他函数,例如 f = @sin; result = f(pi/2);

五、数组和矩阵运算

在MATLAB中,数组和矩阵是核心的数据结构,几乎所有的操作和函数都是围绕它们设计的。MATLAB(Matrix Laboratory的缩写)特别适合于处理矩阵和线性代数运算。我们需要掌握数组的基本操作,包括索引、切片、维度操作等,以及矩阵的算数和线性代数运算。

  • 数组:在MATLAB中,数组可以是一维的(向量),二维的(矩阵),或者多维的。数组中的所有元素必须是相同的数据类型。
  • 矩阵:矩阵是二维数组的一个特例,其中的元素可以进行数学上的矩阵运算。矩阵运算在MATLAB中是非常高效的。

5.1 创建数组和矩阵

创建数组和矩阵非常直接。例如:

% 创建行向量
rowVector = [1, 2, 3, 4, 5];% 创建列向量
colVector = [1; 2; 3; 4; 5];% 创建矩阵
matrix = [1 2 3; 4 5 6; 7 8 9];

5.2 数组和矩阵的运算

MATLAB支持多种数组和矩阵运算,包括但不限于:

  • 元素级运算:对数组或矩阵中的每个元素单独进行运算。使用.(点)操作符来指明元素级运算。

% 元素级乘法
result = [1, 2, 3] .* [4, 5, 6];% 元素级幂运算
result = [1, 2, 3] .^ 2;
  • 矩阵运算:进行传统的矩阵乘法、转置等运算。

% 矩阵乘法
A = [1 2; 3 4];
B = [5 6; 7 8];
result = A * B;% 矩阵转置
result = A';
  • 特殊矩阵运算:计算逆矩阵、行列式、特征值等。

% 矩阵逆
invA = inv(A);% 矩阵行列式
detA = det(A);% 矩阵特征值和特征向量
[V, D] = eig(A);

5.3 数组和矩阵的索引

MATLAB中的索引从1开始,可以用来访问数组或矩阵的特定元素、行、列或子矩阵。

% 访问矩阵的第二行第一列元素
element = matrix(2, 1);% 获取矩阵的第一行
firstRow = matrix(1, :);% 获取矩阵的一个子矩阵(前两行,前两列)
subMatrix = matrix(1:2, 1:2);

5.4 多维数组

MATLAB也支持多维数组,这在处理图像、时间序列数据或其他类型的多维数据时非常有用。

% 创建一个3x3x2的三维数组
threeDArray = cat(3, [1 2 3; 4 5 6; 7 8 9], [10 11 12; 13 14 15; 16 17 18]);

 解决疑问:

  • 张量是一个数学概念,广泛用于物理学和工程学,特别是在描述多维空间中的线性关系时。张量可以视为更高维度的数组,是向量和矩阵的推广。
  • 在编程和机器学习领域,张量通常指的是一个可以有任意数量维度的多维数组。例如,在TensorFlow或PyTorch这样的深度学习框架中,张量是核心的数据结构,用于存储和操作多维数据集。

简而言之,可以认为向量是一维张量,矩阵是二维张量,而更高维度的数组(三维及以上)也可以称为张量。在MATLAB中,虽然通常不经常用“张量”这个术语,但MATLAB支持多维数组的概念,在很多方面与张量相似。

 关于复杂网络建模,我前面写了很多,大家可以学习参考。

【复杂网络建模】——常用绘图软件和库_图论画图软件

【复杂网络建模】——Pytmnet进行多层网络分析与可视化

【复杂网络建模】——Python通过平均度和随机概率构建ER网络

【复杂网络建模】——通过图神经网络来建模分析复杂网络

【复杂网络建模】——Python可视化重要节点识别(PageRank算法)

【复杂网络建模】——基于Pytorch构建图注意力网络模型

【复杂网络建模】——Hypergraphx: 用于高阶网络分析的库

【复杂网络建模】——基于节点相似性的社团划分算法

【复杂网络建模】——链路预测算法及其应用

 【复杂网络建模】——ER网络度分布、无标度网络度分布

相关文章:

【复杂网络建模】——建模工具Matlab入门

目录 一、认识MATLAB 二、认识工具箱 三、基本操作和函数 3.1 算术操作符 3.2 数学函数 3.3 矩阵操作 3.4 索引和切片 3.5 逻辑操作 3.6 控制流程 3.7 数据输入输出 四、变量和数据类型 4.1 数值类型 4.2 整型 4.3 复数 4.4 字符串 4.5 逻辑类型 4.6 结构体&a…...

JVM面试篇

面试篇就是复习前面学的 什么是JVM 1.定义&#xff1a;JVM指的是Java虚拟机&#xff0c;本质是一个运行在计算机上的程序 2.作用&#xff1a;为了支持Java中Write Once &#xff0c;Run Anywhere 编写一次 到处运行的跨平台特性 功能&#xff1a; 1.解释和运行 2.内存管理…...

openEuler 22.03(华为欧拉)一键安装 Oracle 19C RAC(19.22) 数据库

前言 Oracle 一键安装脚本&#xff0c;演示 openEuler 22.03 一键安装 Oracle 19C RAC 过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库…...

蓝桥杯刷题记录之数字王国之军训排队

记录 卡了半天&#xff0c;check函数中的temp % ele 0写成了ele % temp 0就挺无语的 思路 这个晚上在补 代码 import java.util.*; public class Main{static List<List<Integer>> que new ArrayList<>();static int MIN Integer.MAX_VALUE;static i…...

Go语言学习Day1:什么是Go?

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、走近Go①Go语言的Logo②Go语言的创始人③Go语…...

C语言内存函数之 memcmp函数

memcmp函数的记忆&#xff1a;mem表示内存&#xff0c;单位是字节&#xff0c;表示以单位字节来进行操作&#xff1b;头文件是string.h&#xff0c;cmp是compare的缩写&#xff0c;表示比较。总的意思就是在规定的内存下以字节为单位一个字节一个字节的进行比较。 memcmp函数的…...

3. C++ 常见的段错误及对策

常见的 C/C 段错误及对策 一、指针没有指向一块合法的内存 定义了指针变量&#xff0c;但是没有为指针分配内存&#xff0c;即指针没有指向一块合法的内存。这里举几个比较隐蔽的例子。 结构体成员指针未初始化&#xff1b;没有为结构体指针分配足够的内存&#xff1b;函数的…...

推荐的Kubernetes 学习资料

官方文档&#xff1a; Kubernetes 官方文档&#xff1a;https://kubernetes.io/docs/Kubernetes 教程&#xff1a;https://kubernetes.io/docs/tutorials/ 书籍&#xff1a; Kubernetes in Action&#xff0c;Marko Luksa 著Kubernetes Up and Running&#xff0c;Kelsey Hi…...

MySQL之索引与事务

一 索引的概念 一种帮助系统查找信息的数据 数据库索引 是一个排序的列表&#xff0c;存储着索引值和这个值所对应的物理地址无须对整个表进行扫描&#xff0c;通过物理地 址就可以找到所需数据是表中一列或者若干列值排序的方法 需要额外的磁盘空间 索引的作用 1 数据库…...

Linux的基本使用

1.Linux的背景 1.1什么Linux Linux是⼀个操作系统.和Windows是"并列"的关系. 1.2Linux系统的优势 1. 开源(意味着免费,便宜) 2. 稳定(Linux可以运⾏很多年,都不会发⽣重⼤问题) 3. 安全(Linux只有管理员或者特定⽤⼾才能访问Linux内核) 4. ⾃由(不会被强加商业产品和…...

亚信安慧AntDB全景观察:数据库领域的创新者

随着大数据时代的到来&#xff0c;对数据库的需求愈发强烈。在这一背景下&#xff0c;国产数据库逐渐崭露头角&#xff0c;亚信安慧AntDB作为重要的代表产品之一正积极参与到激烈的市场竞争中。亚信安慧AntDB不仅追求技术的革新和突破&#xff0c;同时也致力于满足用户日益增长…...

Linux 系统是如何收发⽹络包的

Linux 系统是如何收发⽹络包的&#xff1f; ⽹络模型 为了使得多种设备能通过⽹络相互通信&#xff0c;和为了解决各种不同设备在⽹络互联中的兼容性问题&#xff0c;国际标准化组织制定了开放式系统互联通信参考模型&#xff08;Open System Interconnection Reference Mode…...

飞跃前端瓶颈:技术进阶指南精华篇

引言&#xff1a; 在互联网的快车道上&#xff0c;前端技术日新月异。对于前端工程师而言&#xff0c;技术水平达到一定高度后&#xff0c;往往会遭遇成长的天花板。本文将探讨如何识别并突破这些技术瓶颈&#xff0c;分享实用的进阶策略和实践案例。 一、技术等级概览&#xf…...

Jenkins安装 Linux 更换镜像 安装插件

Jenkins安装 Linux 更换镜像 安装插件 前言 下面叙述了三种jenkins安装的方式,jenkins安装之前必须有java环境因为他是java写的… yum安装只能安装最新版本的jenkins,但是jenkins是java写的所以他强依赖java版本,当你的服务器的java版本与jenkins版本冲突时还需要给jenkins重…...

(一)基于IDEA的JAVA基础1

Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象理论&#xff0…...

FPGA开源项目分享——基于FPGA加速的热扩散模拟器

导语 今天继续分享康奈尔大学FPGA课程ECE 5760的典型案例——基于FPGA加速的热扩散模拟器。 &#xff08;更多其他案例请参考网站&#xff1a; Final Projects ECE 5760&#xff09; 1. 项目概述 项目网址 https://people.ece.cornell.edu/land/courses/ece5760/FinalProje…...

【ARM 嵌入式 C 入门及渐进 12 --寄存器位清0和置位函数实现】

文章目录 寄存器位清0和置位函数实现示例使用方式注意事项 寄存器位清0和置位函数实现 在 C 语言中&#xff0c;可以使用宏定义来创建用于清除&#xff08;清零&#xff09;或设置&#xff08;置一&#xff09;32位地址中特定位的函数。以下是两个宏定义的示例&#xff1a; #…...

Java实现10万,并发去重,优雅地处理重复请求!

对于一些用户请求&#xff0c;在某些情况下是可能重复发送的&#xff0c;如果是查询类操作并无大碍&#xff0c;但其中有些是涉及写入操作的&#xff0c;一旦重复了&#xff0c;可能会导致很严重的后果&#xff0c;例如交易的接口如果重复请求可能会重复下单。 重复的场景有可…...

《深入解析 C#》—— C# 3 部分

文章目录 第三章 C#3&#xff1a;LINQ及相关特性3.1 自动实现属性&#xff08;*&#xff09;3.2 隐式类型 var&#xff08;*&#xff09;3.3 对象和集合初始化3.3.1 对象初始化器3.3.2 集合初始化器 3.4 匿名类型3.4.1 基本语法和行为3.4.2 编译器生成类型3.4.3 匿名类型的局限…...

Redis 的5种数据类型的基本命令

目录 String的基本命令 1. SET 2. GET 3. GETSET 4. STRLEN 5. APPEND 6. SETRANGE 7. GETRANGE 8. SETEX 9. SETNX 10. MSET 11. MGET 12. INCR 13. DECR 14. INCRBY 15. DECRBY 16. INCRBYFLOAT Map的基本命令 1. HSET 2. HGET 3. HMSET 4. HMGET 5. …...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...

电脑桌面太单调,用Python写一个桌面小宠物应用。

下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡&#xff0c;可以响应鼠标点击&#xff0c;并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址&#xff0c;您可以使用以下几种方法&#xff1a; 1. 查看所有远程仓库地址 使用 git remote -v 命令&#xff0c;它会显示项目中配置的所有远程仓库及其对应的 URL&#xff1a; git remote -v输出示例&#xff1a; origin https://…...