- 博客(110)
- 收藏
- 关注
原创 线性代数&群论应用:正逆运动学 & 变换矩阵
刚体变换不止在机器人中有使用,在图形学中也有使用,图形学中通过旋转矩阵,平移矩阵,投影矩阵,将3D的mesh投影到2D的显示器区域中。这些变换背后的数学原理都是线性代数和群论。
2024-10-28 16:53:13
2018
1
原创 控制系统 & 状态观测问题 & Kalman卡尔曼(附MATLAB实现)
记录了状态观测问题的引入以及常见的解决方案,全维观测器以及卡尔曼观测器的原理以及matlab实现
2024-10-20 14:28:29
842
3
原创 OpenGL(三)着色器语言GLSL
GLSL是一种着色器语言,需要有对应的图形API环境配合,可以使用OpenGL,也可以使用OpenGL ES,也可以使用WebGL。三者的关系可以简单理解为ES为GL的精简版,WebGL是ES的二次包装。如果我们打算从一个着色器向另一个着色器发送数据,我们必须在发送方着色器中声明一个输出,在接收方着色器中声明一个类似的输入。像cuda一样GLSL有几个数据并在一起的数据向量类型,例如vec4,包含4个float数据的向量。GLSL中内置的数据类型还有矩阵mat,但是矩阵只有浮点型的,而且是列优先排序。
2024-09-10 14:00:14
1177
原创 C++入门:C++工具链
编程语言分为编译型语言和解释型语言,二者的区别可以简单理解为,编译型语言是生成和运行的过程是分开的,解释型语言是合在一起的,一句一句运行。编译型需要编译器,解释型需要解释器,C++就是典型的编译型语言。Python是典型的翻译型语言。生成可执行文件的过程称为编译,因为编译和运行是分开的,所以可能存在编译的机器和运行的机器不是一个架构的情况,所以在编译型语言中可能存在交叉编译的情况,即编译机器和运行机器架构不一致。
2024-08-10 11:04:57
952
原创 Modern C++ 智能指针
比如,指向某种资源的std::shared_ptr可能在一个线程执行析构(于是递减指向的对象的引用计数),在另一个不同的线程,std::shared_ptr指向相同的对象,但是执行的却是拷贝操作(因此递增了同一个引用计数)。因为只有一个智能指针指向对象,所以unique_ptr智能指针的赋值函数,拷贝构造函数,都被禁用了,构造函数添加了explicit关键字修饰,不能使用转换函数,即:不能隐式转换构造unique_ptr指针,总之,原始指针过于简陋,虽然强大,但是需要考虑的太多了,对菜鸡不友好。
2024-08-05 18:01:01
884
原创 Modern C++ 函数发展:从函数指针到匿名函数
函数作为最小的代码单元,在C++这个大杂烩中,可以跟很多特性结合,较为复杂,本文讲解C++中函数是如何一步步演变的。
2024-08-05 11:47:35
1212
原创 数值分析:线性方程组&行列式计算
对于一个n×nn \times nn×n的矩阵A,其行列式的可以记作det(A)det(A)det(A)或者∣A∣|A|∣A∣。对于方阵A来说,可以将它看成n个行向量的组合,也可以看成n个列向量的组合,不管是哪一种,行列式的绝对值都等于这n个向量所张成的n维立体的超体积。换句话说,对于方阵来说,行、列向量的区分不改变行列式。定义行列式方式有三种:定义为:det(A)=∣A∣=∣a11a12...a1na21a22...a2n............an1an2...ann∣=∑p(−1)τ(p)∏i=1
2024-08-02 19:45:24
1014
原创 深度学习模型部署(十四)CUDA编程-基本流程&相关工具
可以使用C++11中的chrono库来进行计时,也可以使用cuda事件来计时,这里展示用cuda事件来计时,省略了无关的代码例如内存初始化等步骤。可以看到时间扩大了很多,再算一遍得到有效带宽:248.35268656412760416666666666667GB/s略小于显卡的有限带宽。该工具在11.6以后就被弃用了,现在使用的是Compute Sanitizer。上面那个计时代码没用进行free,会导致内存泄漏,可以使用工具检测一下试试。CUDA提供了名为CUDA-MEMCHECK的工具集’具体包括。
2024-05-22 16:18:02
1055
原创 并行编程(一)相关技术&工具&理论基础
SIMT在GPU中使用,SIMT指单指令多线程,以线程为单位,所有的线程代码相同,但是处理的数据可能不同,例如Nvidia的GPU,动则上千线程。8个线程是逻辑宽度。C++11以后在编译器层提供了内存模型的选项,是对体系结构中的内存模型的进一步封装,如果在C++中选择了强顺序,那么在ARM这种弱顺序的平台上生成的代码会添加很多内存屏障以确保强顺序。一条指令在CPU中的运行需要经过:取指令,译指,发射,执行,存储这几个步骤,除了指令所在的执行环节外,其他环节的电路空着也是空着,所以就提出了流水线技术。
2024-05-20 17:47:51
925
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人