代码解读二 文件名“Ano_Math.c”

2023-05-16

这里面都是一些关于数学函数的骚操作,既然不使用math.h,那么至少说明这里面的数学函数调用不应比math.h里面的函数慢。下面贴出代码,简要做了个注释,看看就行。
至于怎么做的,有需要的可以深究一下

.c文件
/******************** +++++++++++++++++++++++++++ ********************************
 * 描述    :快速计算
**********************************************************************************/

#include "Ano_Math.h"

//arctan查找表 查表是最快的但是前提是你得把表列出来
const float fast_atan_table[257] = 
{
	0.000000e+00, 3.921549e-03, 7.842976e-03, 1.176416e-02,
	1.568499e-02, 1.960533e-02, 2.352507e-02, 2.744409e-02,
	3.136226e-02, 3.527947e-02, 3.919560e-02, 4.311053e-02,
	4.702413e-02, 5.093629e-02, 5.484690e-02, 5.875582e-02,
	6.266295e-02, 6.656816e-02, 7.047134e-02, 7.437238e-02,
	7.827114e-02, 8.216752e-02, 8.606141e-02, 8.995267e-02,
	9.384121e-02, 9.772691e-02, 1.016096e-01, 1.054893e-01,
	1.093658e-01, 1.132390e-01, 1.171087e-01, 1.209750e-01,
	1.248376e-01, 1.286965e-01, 1.325515e-01, 1.364026e-01,
	1.402496e-01, 1.440924e-01, 1.479310e-01, 1.517652e-01,
	1.555948e-01, 1.594199e-01, 1.632403e-01, 1.670559e-01,
	1.708665e-01, 1.746722e-01, 1.784728e-01, 1.822681e-01,
	1.860582e-01, 1.898428e-01, 1.936220e-01, 1.973956e-01,
	2.011634e-01, 2.049255e-01, 2.086818e-01, 2.124320e-01,
	2.161762e-01, 2.199143e-01, 2.236461e-01, 2.273716e-01,
	2.310907e-01, 2.348033e-01, 2.385093e-01, 2.422086e-01,
	2.459012e-01, 2.495869e-01, 2.532658e-01, 2.569376e-01,
	2.606024e-01, 2.642600e-01, 2.679104e-01, 2.715535e-01,
	2.751892e-01, 2.788175e-01, 2.824383e-01, 2.860514e-01,
	2.896569e-01, 2.932547e-01, 2.968447e-01, 3.004268e-01,
	3.040009e-01, 3.075671e-01, 3.111252e-01, 3.146752e-01,
	3.182170e-01, 3.217506e-01, 3.252758e-01, 3.287927e-01,
	3.323012e-01, 3.358012e-01, 3.392926e-01, 3.427755e-01,
	3.462497e-01, 3.497153e-01, 3.531721e-01, 3.566201e-01,
	3.600593e-01, 3.634896e-01, 3.669110e-01, 3.703234e-01,
	3.737268e-01, 3.771211e-01, 3.805064e-01, 3.838825e-01,
	3.872494e-01, 3.906070e-01, 3.939555e-01, 3.972946e-01,
	4.006244e-01, 4.039448e-01, 4.072558e-01, 4.105574e-01,
	4.138496e-01, 4.171322e-01, 4.204054e-01, 4.236689e-01,
	4.269229e-01, 4.301673e-01, 4.334021e-01, 4.366272e-01,
	4.398426e-01, 4.430483e-01, 4.462443e-01, 4.494306e-01,
	4.526070e-01, 4.557738e-01, 4.589307e-01, 4.620778e-01,
	4.652150e-01, 4.683424e-01, 4.714600e-01, 4.745676e-01,
	4.776654e-01, 4.807532e-01, 4.838312e-01, 4.868992e-01,
	4.899573e-01, 4.930055e-01, 4.960437e-01, 4.990719e-01,
	5.020902e-01, 5.050985e-01, 5.080968e-01, 5.110852e-01,
	5.140636e-01, 5.170320e-01, 5.199904e-01, 5.229388e-01,
	5.258772e-01, 5.288056e-01, 5.317241e-01, 5.346325e-01,
	5.375310e-01, 5.404195e-01, 5.432980e-01, 5.461666e-01,
	5.490251e-01, 5.518738e-01, 5.547124e-01, 5.575411e-01,
	5.603599e-01, 5.631687e-01, 5.659676e-01, 5.687566e-01,
	5.715357e-01, 5.743048e-01, 5.770641e-01, 5.798135e-01,
	5.825531e-01, 5.852828e-01, 5.880026e-01, 5.907126e-01,
	5.934128e-01, 5.961032e-01, 5.987839e-01, 6.014547e-01,
	6.041158e-01, 6.067672e-01, 6.094088e-01, 6.120407e-01,
	6.146630e-01, 6.172755e-01, 6.198784e-01, 6.224717e-01,
	6.250554e-01, 6.276294e-01, 6.301939e-01, 6.327488e-01,
	6.352942e-01, 6.378301e-01, 6.403565e-01, 6.428734e-01,
	6.453808e-01, 6.478788e-01, 6.503674e-01, 6.528466e-01,
	6.553165e-01, 6.577770e-01, 6.602282e-01, 6.626701e-01,
	6.651027e-01, 6.675261e-01, 6.699402e-01, 6.723452e-01,
	6.747409e-01, 6.771276e-01, 6.795051e-01, 6.818735e-01,
	6.842328e-01, 6.865831e-01, 6.889244e-01, 6.912567e-01,
	6.935800e-01, 6.958943e-01, 6.981998e-01, 7.004964e-01,
	7.027841e-01, 7.050630e-01, 7.073330e-01, 7.095943e-01,
	7.118469e-01, 7.140907e-01, 7.163258e-01, 7.185523e-01,
	7.207701e-01, 7.229794e-01, 7.251800e-01, 7.273721e-01,
	7.295557e-01, 7.317307e-01, 7.338974e-01, 7.360555e-01,
	7.382053e-01, 7.403467e-01, 7.424797e-01, 7.446045e-01,
	7.467209e-01, 7.488291e-01, 7.509291e-01, 7.530208e-01,
	7.551044e-01, 7.571798e-01, 7.592472e-01, 7.613064e-01,
	7.633576e-01, 7.654008e-01, 7.674360e-01, 7.694633e-01,
	7.714826e-01, 7.734940e-01, 7.754975e-01, 7.774932e-01,
	7.794811e-01, 7.814612e-01, 7.834335e-01, 7.853983e-01,
	7.853983e-01
};

//绝对值函数
float my_abs(float f)
{
	if (f >= 0.0f)
	{
		return f;
	}

	return -f;
}


//该函数被下面函数调用
REAL fast_atan2(REAL y, REAL x) 
{
	REAL x_abs, y_abs, z;
	REAL alpha, angle, base_angle;
	int index;

	/* don't divide by zero! */
	if ((y == 0.0f) || (x == 0.0f))//if ((y == 0.0f) && (x == 0.0f))
		angle = 0.0f;
	else 
	{
		/* normalize to +/- 45 degree range */
		y_abs = my_abs(y);
		x_abs = my_abs(x);
		//z = (y_abs < x_abs ? y_abs / x_abs : x_abs / y_abs);
		if (y_abs < x_abs)
			z = y_abs / x_abs;
		else
			z = x_abs / y_abs;
		/* when ratio approaches the table resolution, the angle is */
		/*      best approximated with the argument itself...       */
		if (z < TAN_MAP_RES)
			base_angle = z;
		else 
		{
			/* find index and interpolation value */
			alpha = z * (REAL) TAN_MAP_SIZE - .5f;
			index = (int) alpha;
			alpha -= (REAL) index;
			/* determine base angle based on quadrant and */
			/* add or subtract table value from base angle based on quadrant */
			base_angle = fast_atan_table[index];
			base_angle += (fast_atan_table[index + 1] - fast_atan_table[index]) * alpha;
		}

		if (x_abs > y_abs) 
		{        /* -45 -> 45 or 135 -> 225 */
			if (x >= 0.0f) 
			{           /* -45 -> 45 */
				if (y >= 0.0f)
					angle = base_angle;   /* 0 -> 45, angle OK */
				else
					angle = -base_angle;  /* -45 -> 0, angle = -angle */
			} 
			else
			{                  /* 135 -> 180 or 180 -> -135 */
				angle = 3.14159265358979323846;

				if (y >= 0.0f)
					angle -= base_angle;  /* 135 -> 180, angle = 180 - angle */
				else
					angle = base_angle - angle;   /* 180 -> -135, angle = angle - 180 */
			}
		} 
		else 
		{                    /* 45 -> 135 or -135 -> -45 */
			if (y >= 0.0f) 
			{           /* 45 -> 135 */
				angle = 1.57079632679489661923;

				if (x >= 0.0f)
					angle -= base_angle;  /* 45 -> 90, angle = 90 - angle */
				else
					angle += base_angle;  /* 90 -> 135, angle = 90 + angle */
			} 
			else
			{                  /* -135 -> -45 */
				angle = -1.57079632679489661923;

				if (x >= 0.0f)
					angle += base_angle;  /* -90 -> -45, angle = -90 + angle */
				else
					angle -= base_angle;  /* -135 -> -90, angle = -90 - angle */
			}
		}
	}


#ifdef ZERO_TO_TWOPI
	if (angle < 0)
		return (angle + TWOPI);
	else
		return (angle);
#else
	return (angle);
#endif
}

//查表快速实现arctan函数
float my_atan(float x, float y)
{
	return fast_atan2(y, x);
}

计算浮点数平方
//float my_pow(float a)
//{
//	return a*a;
//}

//快速平方根倒数算法
float my_sqrt_reciprocal(float number)
{
//	long i;
//	float x, y;
//	const float f = 1.5F;
//	x = number * 0.5F;
//	y = number;
//	i = * ( long * ) &y;
//	i = 0x5f3759df - ( i >> 1 );

//	y = * ( float * ) &i;
//	y = y * ( f - ( x * y * y ) );
//	y = y * ( f - ( x * y * y ) );
	
	long i;
	float x, y;

	x = number * 0.5F;
	y = number;
	i = * ( long * ) &y;
	i = 0x5f3759df - ( i >> 1 );

	y = * ( float * ) &i;
	y = y * ( 1.5f - ( x * y * y ) );
	y = y * ( 1.5f - ( x * y * y ) );
	
	return y;
}

//快速平方根算法
float my_sqrt(float number)
{
//	long i;
//	float x, y;
//	const float f = 1.5F;
//	x = number * 0.5F;
//	y = number;
//	i = * ( long * ) &y;
//	i = 0x5f3759df - ( i >> 1 );

//	y = * ( float * ) &i;
//	y = y * ( f - ( x * y * y ) );
//	y = y * ( f - ( x * y * y ) );
	return number * my_sqrt_reciprocal(number);
}

#define ONE_PI   (3.14159265)
#define TWO_PI   (2.0 * 3.14159265)
#define ANGLE_UNIT (TWO_PI/10.0)

//该函数被下面函数调用,注意区别函数名
double mx_sin(double rad)
{   
	double sine;
	if (rad < 0)
		sine = rad*(1.27323954f + 0.405284735f * rad);
	else
		sine = rad * (1.27323954f - 0.405284735f * rad);
	if (sine < 0)
		sine = sine*(-0.225f * (sine + 1) + 1);
	else
		sine = sine * (0.225f *( sine - 1) + 1);
	return sine;
}

//快速sin
double my_sin(double rad)
{
	s8 flag_ = 1;

	if (rad >= ONE_PI)
	{
		rad -= ONE_PI;
		flag_ = -1;
	}

	return mx_sin(rad) * flag_;
}

//快速cos
float my_cos(double rad)
{
	s8 _flag = 1;
	rad += ONE_PI/2.0;

	if (rad >= ONE_PI)
	{
		_flag = -1;
		rad -= ONE_PI;
	}

	return my_sin(rad)*_flag;
}

float my_deadzone(float x,float ref,float zoom)
{
	float t;
	if(x>ref)
	{
		t = x - zoom;
		if(t<ref)
		{
			t = ref;
		}
	}
	else
	{
		t = x + zoom;
		if(t>ref)
		{
			t = ref;
		}
	}
  return (t);
}

float my_deadzone_2(float x,float ref,float zoom)
{
	float t;
	
	if( x> (-zoom + ref) && x < (zoom + ref) )
	{
		t = ref;
	}
	else
	{
		t = x;
	}

  return (t);
}

//高通滤波器
float my_HPF(float T,float hz,float x,float zoom,float range,float *zoom_adj)
{
// 	if( ABS(x-ref) <zoom )
// 	{
// 	 // *zoom_adj += hz *T *3.14f *(x - *zoom_adj);
// 		*zoom_adj += ( 1 / ( 1 + 1 / ( hz *6.28f *T ) ) ) *LIMIT( (x - *zoom_adj),(- zoom),(zoom) );
// 		*zoom_adj = LIMIT(*zoom_adj,-zoom,zoom);
// 	}
	if( ABS(x ) < 0.5f *range *zoom )
	{
		hz *= 1.2f; 
	}
	else if( ABS(x ) < range *zoom )
 	{
 		hz *= 0.8f; 
 		
	}
	else if( ABS(x ) < zoom )
	{
		hz *= 0.5f; 
	}
	else if( ABS(x ) < 2*zoom )
	{
		hz *= 0.2f; 
	}
	else
	{
		hz *= 0.1f; 
	}
	
	*zoom_adj += ( 1 / ( 1 + 1 / ( hz *6.28f *T ) ) ) *(x - *zoom_adj);
	*zoom_adj = LIMIT(*zoom_adj,-range *zoom,range *zoom);
	return (x - *zoom_adj);

}

//调整为-180 -> +180
double To_180_degrees_db(double x)
{
	return (x>180?(x-360):(x<-180?(x+360):x));
}

void length_limit(float *in1,float *in2,float limit,float out[2])
{
	float l = my_2_norm(*in1,*in2);
	float l_lim = LIMIT(l,0,limit);
	
	if(l==0)
	{
		out[0] = out[1] = 0;
	}
	else
	{
		out[0] = l_lim/l *(*in1);
		out[1] = l_lim/l *(*in2);
	}
}

//FIFO
float fifo(u8 arr_num,u8 *cnt,float *arr,float in)
{
	*(arr + *cnt) = in;
	*cnt += 1;
	if(*cnt>=arr_num) *cnt = 0;
	
	return (*(arr + *cnt));
}
//float To_180_degrees(float x)
//{
//	return (x>180?(x-360):(x<-180?(x+360):x));
//}

//float my_pow_2_curve(float in,float a,float max)
//{
//	if( a > 1 || a < 0 )
//	{
//		return 0;
//	}
//	return( (1.0f - a) + a *ABS(in / max) * in );

//}

//float safe_div(float numerator ,float denominator)
//{
//	if(denominator == 0)
//	{
//		return 0;
//	}
//	else
//	{
//		return (numerator/denominator);
//	}

//}

//double my_norm_2(double x,double y)
//{
//	return( my_sqrt(my_pow(x)+my_pow(y)) );
//}

//double my_norm_3(double x,double y,double z)
//{
//	return( my_sqrt(my_pow(x)+my_pow(y)+my_pow(y)) );
//}

//float second_degree(float in ,float max,float first_p)
//{
//	if(first_p>0 && first_p<1 && max!= 0)
//	{
//		return ( in *(first_p + (1.0f - first_p) *(ABS(in)/max)) );
//	}
//	else
//	{
//		return 0;
//	}
//}

.h文件
#ifndef __ANO_MATH_H__
#define __ANO_MATH_H__
#include "stm32f4xx.h"

#define REAL   float
#define TAN_MAP_RES     0.003921569f     /* (smallest non-zero value in table) */
#define RAD_PER_DEG     0.017453293f
#define TAN_MAP_SIZE    256
#define MY_PPPIII   3.14159f
#define MY_PPPIII_HALF   1.570796f

//三次开根号
#define my_3_norm(x,y,z) (my_sqrt(my_pow((x)) + my_pow((y)) + my_pow((z))))
//两次开根号
#define my_2_norm(x,y) (my_sqrt(my_pow((x)) + my_pow((y))))

//表示平方
#define my_pow(a) ((a)*(a))
//实现安全除法,即分母不为0
#define safe_div(numerator,denominator,safe_value) ( (denominator == 0)? (safe_value) : ((numerator)/(denominator)) )
//快速绝对值
#define ABS(x) ( (x)>0?(x):-(x) )

//#define LIMIT( x,min,max ) ( (x) < (min)  ? (min) : ( (x) > (max)? (max) : (x) ) )
//设定死上下限
#define LIMIT( x,min,max ) ( ((x) <= (min)) ? (min) : ( ((x) > (max))? (max) : (x) ) )

#define _MIN(a, b) ((a) < (b) ? (a) : (b))
#define _MAX(a, b) ((a) > (b) ? (a) : (b))

#define my_pow_2_curve(in,a,max) (((1.0f - (a)) + (a) *LIMIT(ABS((in) / (max)),0,1)) * in)

//#define RECTANGLE2CIRCLE_FACTOR(x,y,l) (safe_div(_MAX(ABS((x)),ABS((y))),(l),0))
//#define RECTANGLE2CIRCLE_FACTOR(r,l) (safe_div((r),(l),0))

//调整为-180 -> +180
#define To_180_degrees range_to_180deg
#define range_to_180deg(a) ( (a)>180 ? (a - 360) : ((a)<-180 ? (a + 360) : (a)) )

float my_abs(float f);
REAL fast_atan2(REAL y, REAL x);
//float my_pow(float a);
float my_sqrt(float number);
float my_sqrt_reciprocal(float number);
double mx_sin(double rad);
double my_sin(double rad);
float my_cos(double rad);
float my_deadzone(float x,float ,float zoom);
float my_deadzone_2(float x,float ,float zoom);

float my_deadzone_p(float x,float zone);
float my_deadzone_n(float x,float zone);

//float To_180_degrees(float x);
double To_180_degrees_db(double x);
//float my_pow_2_curve(float in,float a,float max);
//float safe_div(float numerator ,float denominator,float sv);
float fifo(u8 arr_num,u8 *cnt,float *arr,float in);
float linear_interpolation_5(float range[5],float interpolation[5],float in);//range 必须从小到大

void length_limit(float *in1,float *in2,float limit,float out[]);
#endif


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码解读二 文件名“Ano_Math.c” 的相关文章

  • pycharm快捷键

    pycharm快捷键
  • 大规模多智能体强化学习资料整理

    多智能体中存在一些问题和一些可行解决方法 2020年 xff0c Multi Agent RL领域的主流研究方向有哪些 xff1f 深度强化学习 初学者入门介绍 xff08 通俗易懂 xff09 多智能体强化学习 新手入门算法论文大总结 多
  • python路径拼接os.path.join()函数的用法

    os path join 函数 xff1a 用来连接路径名组件 1 如果各组件名首字母不包含 则函数会自动加上 2 如果有一个组件是一个绝对路径 xff0c 则在它之前的所有组件均会被舍弃 3 如果最后一个组件为空 xff0c 则生成路径以
  • linux python解决中文字体Font family [‘sans-serif‘] not found. Falling back to DejaVu Sans

    点击此处
  • Python导入自定义模块方法

    添加链接描述
  • 课程学习邂逅强化学习

    一篇综述带你全面了解课程学习 Curriculum Learning 课程强化学习 课程学习邂逅多智能体强化学习
  • 常见的几种白盒测试

    2019 6 26 补充与修正了短路相关的内容 2019 9 16 修正了短路部分的错误 xff0c 顺便去掉了用词不合适的前言 目前我所了解到的逻辑覆盖 xff08 而非路径覆盖 xff09 型的白盒测试大概有这几种 xff1a SC x
  • 元强化学习

    元强化学习 即可以迁移到训练阶段未见过的任务中
  • 深度学习中的标量、向量、矩阵和张量的区别

    在深度学习中 xff0c 张量 xff08 tensor xff09 的维数就是张量的阶数 0维的tensor就是标量 xff0c 就是一个单独的数 xff1b 1维的tensor就是向量 xff0c 就是一列数 xff0c 其中的每一个元
  • word使用技巧

    删除文档中多余的空白页 在word中插入图表目录 xff08 插图清单 表格清单 xff09 step1 先设置图表目录 xff08 引用 插入题注 xff09 step2 然后在目录页面点击 xff08 引用 插入表目录 xff09 st
  • tf.AUTO_REUSE的作用

    Tensorflow复用计算图 reuse 61 tf AUTO REUSE tf AUTO REUSE作用
  • 对多智能体强化学习算法MADDPG的理解

    MADDPG的架构 MADDPG采用的是 中心化训练 43 去中心化决策 的架构 xff0c 是一种Actor Critic方法 其中每个智能体都有一个价值网络和策略网络 价值网络和策略网络 第i号价值网络 Critic 输入 xff1a
  • 互联网知识点整理

    软件测试知识点 数据库知识点 计算机网络知识点 数据结构知识点 C 43 43 知识点整理 JAVA知识点整理
  • 导出TensorBoard中的所有数据并平滑处理

    点击此处 tensorboard平滑曲线代码
  • RL论文数据图绘制

    rl plotter 强化学习论文里的训练曲线是用什么画的 xff1f 如何计算相关变量
  • 强化学习之美

    强化学习作为一门灵感来源于心理学中的行为主义理论的学科 xff0c 其内容涉及概率论 统计学 逼近论 凸分析 计算复杂性理论 运筹学等多学科知识 xff0c 难度之大 xff0c 门槛之高 xff0c 导致其发展速度特别缓慢 随着近年来以
  • 直线型一阶倒立摆2---建模

    三 直线型一阶倒立摆模型建立 一级倒立摆系统是一个不稳定的系统 xff0c 需要对其进行机理建模 在研究过程中 xff0c 应忽略空气摩擦 等 xff0c 而后可将倒立摆系统进行抽象化 xff0c 认为其由小车和匀质刚性杆两部分组成并对这两
  • 可用性和可靠性的区别

    首先 xff0c 这两个属性都是质量 xff08 可维护性 xff09 的一部分 按照书上的定义 xff0c 可靠性 xff08 reliability xff09 xff1a 在规格时间间隔内和规定条件下 xff0c 系统或部件执行所要求
  • 直线型一阶倒立摆3---控制器设计

    四 控制器设计 如前文所述 xff0c 倒立摆状态空间方程表明系统能够被控制 被观测 倒立摆或者其它受控系统达到受控稳定状态 xff0c 其实质上是指系统的各状态量收敛至一目标稳定值 对于状态空间描述而言 xff0c 系统矩阵A的特征值为负
  • Centos7 关闭防火墙

    Centos7 关闭防火墙 CentOS 7 0默认使用的是firewall作为防火墙 xff0c 使用iptables必须重新设置一下 1 直接关闭防火墙 systemctl stop firewalld service 停止firewa

随机推荐

  • 485无线通信/数传模块_zigbee模块_RS485转ZigBee_顺舟智能

    一 概述 顺舟智能 SZ02系列 ZigBee无线串口通信设备 xff08 485无线通信 数传设备 xff09 xff0c 采用了加强型的ZigBee无线技术 xff0c 集成了符合 ZIGBEE协议的射频收发器和微处理器 xff0c 符
  • 华清远见嵌入式学院学员实践项目案例介绍一

    基于GPRS的远程安防监控系统 1 项目背景 随着现代电力电子技术和微电子技术的迅猛发展 xff0c 自动化 xff0c 智能化程度的不断的提高 xff0c 家居安防技术正在不断发展 传统的家居安防系统已经越来越不能满足现代人的需求 消费者
  • Ubuntu 20.04.05安装ceres-1.14.0

    1 安装Ceres1 14 0 链接 Ubuntu20 04安装Ceres1 14 0 3 cmake编译ceres遇到的问题 xff08 1 xff09 TBB 问题描述 xff1a Did not find Intel TBB libr
  • ubuntu18.04 安装编译ceres-solver-1.14.0 编译错误

    在Ubuntu18 04 安装Ceres solver 1 14 0 xff0c make时出现了98 Built target bundle adjuster xff0c ecipe for target examples CMakeFi
  • ls-remote -h -t git://github.com/adobe-webplatform/eve.git

    npm WARN deprecated bfj node4 64 5 3 1 Switch to the bfj package for fixes and new features npm WARN deprecated nomnom 6
  • 数据可视化图表插件调研:Echarts、Highcharts、G2、D3

    目前常用于前端网页数据可视化实现的图表插件主要有四款 xff1a Echarts Highcharts G2 D3 xff0c 开发一些产品工具的时候可能会集成这些开源的可视化插件 xff08 这里Highcharts不开源 xff09 1
  • 31岁转行的我

    2011年从一所普通二本师范大学毕业后先后从事了两年的教育工作 xff0c 但都没有挣到钱 xff0c 12年从深圳回到西安 xff0c 参加了几次公务员和事业单位的招考 xff0c 几次因0 1分的微小差距与国家饭碗擦肩而过 后来决定不再
  • git submodule 如何同步更新

    摘要 xff1a git submodule 更新之后 xff0c 如果在父仓库里直接调用 git submodule update init recursive 会发现 子模块的代码不会更新 初学者会很迷惑 xff0c 怎么能把子模块更新
  • egret 入门 初试

    整理的文章 白鹭引擎入门 趁着今天周六 xff0c 把苹果放下一边先 今天早上一醒来就装上了js编辑神器Webstorm xff0c 最近也开始关注了一些移动方面的 js 前端框架 如 谷歌的Angularjs 和 fackbook 的Re
  • Ubuntu 18之vnc连接不上问题(已解决)

    在配置vnc时所以的准备动作已经准备好了 xff0c 该配的文件也配好了 xff0c 但就是一直连接不上 在主机端报time out的错误 xff0c 后来查百度得知vncserver xff1a 1对应5901端口 xff0c 2就是59
  • Matlab R2019a Win64位 迅雷下载链接

    鉴于百度云和PanDownload各种限速 xff0c 所以我特意寻了迅雷磁力链接供大家下载 实在是因为百度云下载只有50 k s xff0c 而迅雷下载5 m s啊 Matlab R2019a Win64位 链接内容包括Matlab和Ca
  • 力扣K神图解算法数据结构解析08

    力扣K神图解算法数据结构点这里 八 位运算 剑指15 xff0c 二进制中1的个数 class Solution public int hammingWeight uint32 t n int cnt 61 0 for int i 61 0
  • 吴军老师《给中学生/大学生的书单》----Yohao整理

    2018 7 27记录 span class hljs code 给中学生的书单 span 一 文学类 18本 span class hljs code 1 金庸和琼瑶各一本 长篇的比短篇的好 span span class hljs co
  • 北航2系921 2021考研历年真题及参考答案(2020-2004)

    需要自取 百度网盘 提取码 xff1a iwbg 关于2020北航921试题 相信大家都听说了 xff0c 2020年的921试题整体难度较2019年小 2019考完后 xff0c 群里面怨声载道 xff0c 信号10年没考电路题了怎么就今
  • 姿态解算

    姿态解算全过程 关于这方面 xff0c 姿态计算的理解大致需要经过以下几个步骤 1 秦永元的 惯性导航 xff0c 不但十分基础而且写的也十分好 xff0c 适合入门 但是并不是所有章节都是需要看的 xff0c 其中1 2节 9 2节和9
  • 匿名飞控代码解读汇总

    由于本人临近毕业 xff0c 所做的毕设是有关无人机方面的 xff0c 所使用的也是匿名的飞控 lt 资料包 20171217 gt xff0c 所以首先需要读懂匿名代码然后才能增加自己的功能 xff0c 临近毕业还有两个月左右 xff0c
  • 融合磁力计的Mahony互补滤波算法

    https blog csdn net qq 21842557 article details 50993809 上面博客有关于磁力计的详细解释 xff0c 不过由于本人资质愚钝 xff0c 至今还不是完全理解 不过思想大致和加速度计差不多
  • 代码解读一 文件名“ANO_Imu.c”

    我把这个文件的所有代码贴上来了 xff0c 供大家参考 xff0c 由于本人水平有限 xff0c 且匿名代码注释比较少 xff0c 所以很多也不是很懂 xff0c 实在是一些莫名的定义太多了 xff0c 什么w x y z h之类的 xff
  • 每周学一点 egret(2): EgretConversion 工具转换ts

    今晚无聊试了一下wing的格式化和这个转换工具 开始的时候我尝试手写翻译 xff0c 发现这一款转换也比较简单 所以尝试做了一下转换 对于如果文件名是中文 要小心一点 总是出现怪怪的 转换后 xff0c 没有直接跳转到对于的目录去 如果加上
  • 代码解读二 文件名“Ano_Math.c”

    这里面都是一些关于数学函数的骚操作 xff0c 既然不使用math h xff0c 那么至少说明这里面的数学函数调用不应比math h里面的函数慢 下面贴出代码 xff0c 简要做了个注释 xff0c 看看就行 至于怎么做的 xff0c 有