图论
图论基础图论基础概念
有限图:顶点数和边数有限的图称为有限图。
平凡图:只有一个顶点的图。
零图:一个没有边的图被称为零图。
n阶图:顶点数为n的图。
$(n,m)$图:顶点数为 𝑛 的图,边数为 𝑚 的图
边的重数:连接两个相同顶点的边的条数
环 :端点重合为一点的边
简单图:无环无重边的图;其余的图称为复合图
顶点 𝑢 与 𝑣 相邻接
顶点 𝑢 与 𝑣 间有边相连接
𝑢 与 𝑣 称为边的两个端点
通常规定一个顶点与自身是邻接的
顶点 𝑢 与边 𝑒 相关联:顶点 𝑢 是边 𝑒 的端点
边 $e_1$与边 $e_2$相邻接:边 $e_1$ 与边 $e_2$ 有公共端点
途径:有限非空序列 $ w = v_0e_1v_1e_2v_2 \ldots e_kv_k $,$ e_i $ 端点 $ v_{i-1}, v_i $。途径长度为边数;$ v_0, v_k $ 分别为起点终点。
迹:边不重复的途径。
路:顶点不重复的途径。
闭途径、闭迹与圈:起点终点重合的途径、迹、路。闭迹也称为回路。长度为 $ k $ 的圈称为$k$圈,$ ...
信号与系统
复数基础基础概念复数表示形式复数的标准形式为$a+bi$
指数表示复数可以用指数形式表示,形式为:
z = re^{i\theta}三角形式复数的三角形式是:
z = r(\cos \theta + i\sin \theta)辅角和模$r$ 是复数的模(实数),$\theta$ 是复数的辐角(主值通常在 $[-\pi, \pi]$ 或 $[0, 2\pi]$ 范围内)
复数的模定义为:
r = |z| = \sqrt{a^2 + b^2}相位若$z=a+bi$,相位的定义为$arctan(\frac b a)$。
共轭复数的共轭定义为:
z^* = a - bi其中,$z = a + bi$ 是复数的标准形式。共轭运算具有以下性质:
$z \cdot z^* = |z|^2$
$(z_1 \cdot z_2)^ = z_1^ \cdot z_2^*$
$(z^)^ = z$
$z+z^*=2Re\{z\}$ (Real)
$z-z^*=2Im\{z\}i$ (Imaginary)
这里$Im\{z\}$是不包含$i$的
欧拉公式
e^{ix} = \c ...
从0开始配置mindtorch环境
本文的linux(昇腾)服务器是一个刚安装好Ubuntu20.04 LST的裸机,具体的信息如下:
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
NPU:910A
本文将会一步步展示如何完整配置一个完整的,可以运行mindtorch(0.3.0)的环境。
要安装的依赖为了配置一个可以运行mindtorch的环境,需要安装以下的依赖:
Miniconda:用于管理Python环境
Python
NPU固件与驱动
Cann软件包:昇腾AI处理器配套软件包
Mindspore
Mindtorch
下面逐个来安装
参考链接:
Miniconda安装
Cann安装
Mindspore安装
Mindtorch安装
安装依赖准备首先需要找到一个文件夹,用于放置安装包,本文选择在~/packages下放置安装包。
123cd ~/mkdir packagescd packages
Miniconda这里下载最新的Miniconda。
...
Pycharm设置运行配置
Pycharm中运行python程序的时候不会调用source ~/.bashrc,所以有很多环境变量可能没有。
所以可以提前开一个终端,然后将所有环境变量保存下来
1env > ./environment.env
然后再在Pycharm运行配置中填入.env文件的路径。方便的加载环境变量。
在Pycharm中重命名项目
噩梦伊始在Pycharm中创建一个项目之后,我们可能对自己取的项目名称不满意:
比如,此时我想把名称A改为名称B。此时我们会发现,在Pycharm中有一个重命名项目的功能:
在执行完两个重构:重命名项目和重命名目录之后,可以发现如我们所愿,项目和目录名称都变了。
但这时如果运行原来的程序,会直接报错运行出错:
匆忙逃窜这是因为,目录名称改了,但是工作目录的名称没改。也就是运行配置没改。
此时就需要编辑配置:
发现有三个地方需要更改:
需要将第一个解释器改为~/PycharmProjects/B/.venv/bin.python
需要更改脚本路径为~/PycharmProjects/B/.venv/bin.python
需要更改工作目录为~/PycharmProjects/B
第二三项可以直接点击旁边的文件夹图标进行更改,而第一项的修改比较麻烦。
首先进入设置,改掉Python解释器的路径。在这个界面点击全部显示。
先移除解释器:
然后再添加解释器:
更改完这个之后运行配置中的解释器也会跟着改变。现在就可以正常运行项目了:
重获新生但此时还没完,因为现在打开终端, ...
体素、网格与点云
前言网上的关于体素(Voxel)、网格(Mesh)和点云(Point Cloud)的资料比较分散,而它们又是三维重建中很基础且重要的内容。故写了一篇文章总结了一下网上的相关资料。
一个三维空间中的物体在计算机中可以有不同的表达形式,图a是用点云(Point Cloud)表达,图b是用体素(Voxel)表达,图c是用网格(Mesh)表达
体素二维的图片可以用一个个像素来表示,将二维图片看成一个$n\times n$的矩阵,则矩阵中存储的每一个数就是一个像素。如果这个矩阵仅存储0和1,那就有一张黑白的图片;如果这个矩阵每个数都是8位无符号数,那么就有了一张灰度图像。
三维中的物体也可以用同样的思想来表示,即将一个三维的物体看成$n\times n\times n$的矩阵,矩阵中存储的每一个数就是一个体素。同样的,这个体素可以只有1位,也可以是8位或32位数。
网格多边形网格,也被称为“Mesh”,这里简称为网格,是计算机图形学中用于为各种不规则物体建立模型的一种数据结构。现实世界中的物体表面直观上看都是由曲面构成的,而在计算机里,曲面是由无数个小的多边形面片去组成的。Mesh既可以 ...
人工智能
人工智能的三大学派人工智能主要学派分为符号主义、连接主义、行为主义。
符号主义(Symbolicism)学派:认为人工智能源于数理逻辑。该学派将数学严格公理化,从公理出发,由逻辑推理得到引理,定理,推论。
连接主义(Connectionism)学派:认为人工智能源于仿生学,特别是对人脑模型的研究。
行为主义(Actionism)学派:来源于控制论及“感知—动作”型控制系统。该学派认为智能取决于感知和行动,人工智能可以像人类智能一样逐步进化,以及智能行为只能在现实世界中与周围环境交互作用而表现出来。
\begin{array}{|c|c|c|}
\hline \text { 学习模式 } & \text { 优势 } & \text { 不足 } \\
\hline \text { 用规则教 } & \begin{array}{c}
\text { 与人类逻辑推理相似, 解 } \\
\text { 释性强 }
\end{array} & \begin{array}{c}
\text { 难以构建完备的知识规则 } \\
\text { 库 }
\end{array} \\
\h ...
Macports常用指令
安装如果要安装名为portname的端口,则在命令行中输入以下指令:
1sudo port install portname
如果想查看安装时的详细信息,则加上-v参数。
1sudo port -v install portname
如果安装失败了想要重装,在重新运行sudo port install portname之前,需要运行以下指令:
1sudo port clean portname
卸载如果想卸载名为portname的端口,则在命令行中输入以下指令:
1sudo port uninstall portname
如果想将安装portname时同时安装的那些依赖卸载,则加上--follow-dependencies参数:
1sudo port uninstall --follow-dependents portname
更新如果要更新Macports或者安装的软件包,可以运行下面两条指令:
sudo port selfupdate:
这个命令会更新MacPorts本身,即MacPorts的基础系统。
同时,它会同步ports树,即更新可用的软件包列表。(只是软件包列表,不是软 ...
Pycharm配Jupyter NoteBook
配置:
Mac
Pycharm 2024.1
首先,需要有Pycharm Professional(学生免费)。
然后点击左下角终端:
命令行中输入pip install jupyter。
之后新建一个Jupyter Notebook文件,就可以愉快写代码了。
模块和cmake
首先需要指定cmake的最低版本为3.28(3.28才支持扫描模块)
12cmake_minimum_required(VERSION 3.28)project(untitle)
然后需要设置C++的标准为C++20(C++20才有模块),并启用了对C++模块的支持。
12set(CMAKE_CXX_STANDARD 20)set(CMAKE_CXX_SCAN_FOR_MODULES ON)
创建了一个名为simple_module的库。12add_library(simple_module)将几个.cppm文件作为C++模块添加到simple_module库中。1234567target_sources(simple_module PUBLIC FILE_SET CXX_MODULES FILES simple.cppm simpe_1.cppm simple_2.cppm)这行代码创建了一个名为untitled1的可执行文件,其主文件为main.cpp。
1add_executable(untitled1 mai ...