- 博客(76)
- 资源 (2)
- 收藏
- 关注

原创 如何用纯c语言优雅地实现一个矩阵运算库
文章目录1.一个优雅好用的c语言库必须满足哪些条件2.实现一个矩阵运算库的几点思考(1)采用预定义的数据类型,避免直接使用编译器定义的数据类型(2)基于对象编程,定义矩阵对象(3)除了特别编写的内存处理函数(使用栈链表保存、释放动态分配的内存地址),不允许任何函数直接分配和释放内存(4)防御性编程,对输入参数做有效性检查,并返回错误号(5)注意编程细节的打磨3.完整c程序参考资料 编程既是技术输出也是艺术创作。鉴赏高手写的程序,往往让人眼前一亮,他们思路、逻辑清晰,所呈现的代码简洁、优雅、高效,令人为之
2021-08-16 23:23:16
5455
31

原创 c语言中如何避免过多使用全局变量
文章目录1、设计函数以传递指针类型的参数2、定义一个函数以获取/设置全局变量,利用static变量,将全局变量作用域限定于该函数,将全局变量隐藏起来3、把全局变量定义在某一个 .c 文件中, 并定义为 static类型,然后定义一系列操作这个变量的函数,头文件里面只有操作函数, 没有变量的声明1、设计函数以传递指针类型的参数 全局变量满天飞的代码:MP g_MPData;void fun0(void){ g_MPData.a = 0;}void fun1(void){ g_MPData
2020-11-10 22:19:33
7734
1

原创 一文带你完全掌握机器人DH参数建模(详细步骤+实例+代码)
一文带你完全掌握机器人DH参数建模(详细步骤+实例+代码)一、前言1、描述两个坐标系的变换关系需要6个参数(3个表示位置变换,3个表示姿态变换),为什么DH参数只需4个?2、利用DH参数建模时,各个连杆坐标系的建立是唯一的吗?3、DH参数表是唯一的吗?4、标准DH参数与修正DH参数有何异同?二、标准DH参数1、DH四个参数的定义2、DH连杆坐标系的约定3、根据DH连杆坐标系约定,建立各个连杆坐标系4、根据DH四个参数的定义,创建DH参数表三、六轴机器人实例(standard DH)
2020-05-09 19:17:01
66782
44
原创 直线拟合(支持任意维空间的直线拟合,附代码)
给定一系列的三维空间点,拟合得到直线的方程。本文的直线拟合方法适用于任意维空间的直线拟合。博文包括完整的推导过程,方法简单有效,附完整的MATLAB代码
2024-01-27 20:12:57
3034
原创 一个函数最好只做一件事?未必!这是一个例子
编程实践中,为了模块化设计,降低程序的复杂度,提高程序的可读性,通常设计一个函数时应尽可能简单,简单到只做一件事。然而,工程实践中,有时候受制于一些因素,如内存空间、程序执行效率等,迫使我们不得不打破“一个函数只做一件事”的规则。
2023-11-30 22:39:02
624
1
原创 三次、五次多项式插值(附代码)
本博文利用matlab符号计算的功能,给出三次、五次多项式插值的系数解析解(不需要解矩阵方程),并尽可能减少运算量
2022-10-23 16:59:46
10224
1
原创 全局B样条混合插值与拟合
文章目录一、问题描述二、全局B样条混合插值与拟合效果展示一、问题描述 对于给定的一系列任意大于1维数的数据点,通过指定控制点个数以及所给定数据点中需要精确经过的点,进行全局B样条混合插值与拟合,使曲线满足一定连续性(C1、C2或更高阶连续)。二、全局B样条混合插值与拟合效果展示 点个数15,控制点个数10,第1 6 10 13 15个点精确经过: 点个数15,控制点个数8,第1 6 10 13 15个点精确经过: 点个数15,控制点个数10,第1 5 9 13 15个点精确经过:
2021-10-31 17:05:54
777
3
原创 全局B样条拟合
文章目录一、问题描述二、拟合与插值对比优缺点一、问题描述 对于给定的一系列任意维数的数据点(维数大于等于1)及拟合误差,进行全局B样条拟合,使曲线满足一定连续性(C1、C2或更高阶连续),同时支持多种拟合条件: (1)只给定数据点; (2)给定数据点、起点切矢、终点切矢;二、拟合与插值对比优缺点 ...
2021-10-28 22:28:34
1750
1
原创 全局B样条插值
文章目录一、问题描述二、多种插值条件(1)只给定数据点(2)给定数据点、起点切矢、终点切矢(3)给定数据点、所有数据点处的切矢(4)给定数据点、起点切矢、终点切矢、起点二阶导矢、终点二阶导矢一、问题描述 对于给定的一系列任意维数的数据点(维数大于1),进行全局B样条插值,使曲线满足一定连续性(C1、C2或更高阶连续),同时支持多种插值条件: (1)只给定数据点; (2)给定数据点、起点切矢、终点切矢; (3)给定数据点、所有数据点处的切矢; (4)给定数据点、起点切矢、终点切矢、起点二
2021-10-13 22:58:58
979
3
原创 局部B样条插值
文章目录问题描述局部B样条插值的一些特性三级目录问题描述 对于给定的一系列任意维数的数据点(维数大于1),进行局部三次B样条插值,同时可以选择插值条件: (1)只给定数据点; (2)给定数据点、起点切矢、终点切矢; (3)给定数据点、起点切矢、终点切矢;局部B样条插值的一些特性三级目录...
2021-09-26 22:49:50
1060
原创 可以修改常变量的值吗(c语言)
c语言中,常变量是指被const关键字修饰的变量,其值一般在定义的时候初始化,之后不允许赋值改变其值。若常变量作为左值,试图对常变量赋值,编译器会报错,如以下例子。#include <stdio.h>#include <memory.h>int main(void){ const double a; const double array[3]; a = 1.0; //编译出错,提示“表达式必须为可修改的左值” array[0] = 2.0; /
2021-07-24 16:05:32
1447
原创 判断无符号整数是否为2的n次方(c语言)
//判断无符号整数a是否为2的n次方,若是返回1,不是返回0int is_power_of_two(unsigned int a){ if (a != 0u) { if ((a & (a - 1u)) == 0u) { return 1; } else { return 0; } } else { return 0; }}
2021-07-22 19:11:48
340
原创 LU分解、矩阵求逆与解线性方程组(matlab代码)
文章目录一、前言二、LUP分解MATLAB代码三、LUP分解求解方程组MATLAB代码四、LUP分解、矩阵求逆、求解线性方程组测试例子一、前言 参考知乎文章:LU分解、LUP分解、Cholesky分解中的LUP分解,LUP分解相比LU分解更加稳定,在矩阵求逆、求解解线性方程组有广泛运用。笔者修复了文章所述LUP算法一个BUG,当待分解的矩阵某一列均为0时,例如矩阵[0 1;0 1],无法进行LUP分解。增加基于LUP分解求解线性方程组代码、在矩阵方程AX=B中,当B为单位阵时,利用LUP分解可以快速稳
2021-07-07 22:45:46
6166
6
原创 快速平方根倒数算法C程序(包括单精度与双精度)
/**********************************************************************************************Function: fast_invSqrt32Description: 快速平方根倒数Input: 单精度浮点数numberOutput: 无Input_Output: 无Return: 快速平方根倒数的值Author: Marc Pony(marc_pony@163.com)*************
2021-04-05 15:54:02
832
9
原创 详解QT中的快速正弦、快速余弦函数的实现
文章目录一、问题描述二、推导过程1、推导过程一、问题描述 数值计算中,许多数学函数(如正弦、余弦、平方根等)可以通过泰勒级数展开的方法求得,然而,对于正弦函数与余弦函数,采用泰勒级数展开的方法收敛速度慢,计算速度慢。那么,有没有在满足给定的计算精度前提下,快速计算正弦函数与余弦函数的算法呢? QT中提供了快速正弦函数、快速余弦函数的算法,代码片段如下:#define QT_SINE_TABLE_SIZE 256#define M_PI (3.14159265358979323846)inli
2021-03-24 23:13:05
4381
原创 为什么我推荐使用一级指针创建二维数组?
文章目录1、对于nnn行mmm列的二维数组aaa,a[i][j]a[i][j]a[i][j]与a[i∗m+j]a[i*m+j]a[i∗m+j]这两种数组元素的访问方式的效率是一样2、设计函数以传递指针类型的参数1、对于nnn行mmm列的二维数组aaa,a[i][j]a[i][j]a[i][j]与a[i∗m+j]a[i*m+j]a[i∗m+j]这两种数组元素的访问方式的效率是一样#include <time.h>#include <stdio.h>#include <ma
2020-12-14 22:41:50
823
robot_velocity_planning _V2.0.rar
2020-03-22
机器人速度规划
2018-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人