cos

二连杆机械臂角度解算

别等时光非礼了梦想. 提交于 2020-11-24 12:46:09
二连杆机械臂角度解算 本文采用极坐标的平移变换公式或者余弦定理的方法在定坐标点的情况下去解算二连杆机械臂两个关节处应该旋转的角度。由于余弦定理更容易理解且极坐标的平移变换公式和余弦定理推导出来的角度解算结果公式一致,接下来会用余弦定理去推导最终公式。 我们要解决的问题是已知一个目标点坐标(x,y),已知两个连杆的长度OA,AB,我们的目标是求α和β这两个关节角。如下图所示: 根据同位角关系可知β=α-γ,所以我们只需要求出角α和角γ即可。角α可分为角1和角θ相加。 由于B点坐标已经给出,由 a r c t a n ⁡ ( y x ) arctan⁡(\frac{y}{x}) a r c t a n ⁡ ( x y ​ ) 可求出角θ,角1由余弦定理 c o s ∠ 1 = ( O A 2 + O B 2 − A B 2 2 × O A × O B ) cos∠1=(\frac{OA^2+OB^2-AB^2}{2×OA×OB}) c o s ∠ 1 = ( 2 × O A × O B O A 2 + O B 2 − A B 2 ​ ) 可得 由于B点纵坐标y=OAsin⁡α+ABsin⁡γ。角α已知y已知,可求角γ。由于β=α-γ,角β可求。 下面给出具体C语言代码(代码中的角度全部都是弧度制): #define L1 105.0 f #define L2 145.0 f /

实验一、熟悉MATLAB环境和基本信号的产生与运算

强颜欢笑 提交于 2020-11-24 12:45:31
实验一、熟悉MATLAB环境和基本信号的产生与运算 一、实验目的 二、实验器材 三、实验原理 1、 MATLAB简介 (1)MATLAB的桌面系统 (2)实验中常用的MATLAB函数命令 2.MATLAB中信号的表示-- MATLAB中一般用向量表示信号 (1)连续时间信号 (2)离散时间信号 3.信号的基本运算 (1)信号的加减 (2)信号的乘法 四、示例演示 1.基本信号的波形 (1)正弦信号 (2)抽样信号 抽样信号Sa(t)=sin(t)/t (3) 指数信号 (4)单位阶跃信号 (5)单位冲激序列 (6) 三角信号 (7)复指数信号 (8) 矩形脉冲信号 2.信号的运算 (1)绘出连续序列f(t)=exp[(-0.1+j0.5)t]的实部信号、虚部信号、振幅信号、相位信号。 (2)两个序列的加、乘运算 五、实验内容 1.验证实验原理中程序 2.画出信号波形(1) (2) 3.自选二个简单的信号进行加减和乘法运算。 (1).用matlab实现f=f1(t)+f2(t)及 f=f1(t).f2(t) (2).用matlab实现![在这里插入图片描述](https://img-blog.csdnimg.cn/20201121222031822.png#pic_center) (3).用matlab实现![在这里插入图片描述](https://img-blog.csdnimg

shellcode 反汇编,模拟运行以及调试方法

与世无争的帅哥 提交于 2020-11-24 06:31:09
onlinedisassembler https://onlinedisassembler.com 在线反汇编工具,类似于lda。功能比较单一。 Any.run 等平台在线分析 将shellcode保存为文件 通过如下脚本,转换shellcode为char数组 import binascii filename = "C:\\Users\\liang\\Desktop\\工作相关\\样本\\rdpscan\\rdpscan\\ssleay32.dll" #filename = "C:\\Users\\liang\\Desktop\\payload" shellcode = "{" ctr = 1 maxlen = 15 for b in open(filename, "rb").read(): shellcode += "0x" + str(binascii.hexlify(b.to_bytes(length=1, byteorder='big')))[2:4] + "," if ctr == maxlen: shellcode += "\n" ctr = 0 ctr += 1 shellcode = shellcode[:-1] + "}" print(shellcode) 将结果复制到char shellcode处,并 通过如下vs程序加载shellcode #include

幅度调制(AM调制、DSB(双边带)调制、SSB、VSB)

半腔热情 提交于 2020-11-24 03:55:34
幅度调制 (线性调制)是由调制信号去控制高频载波的幅度,使之调制信号的频谱线性变化。 载波信号:$ c(t) = A\cos\omega_ct $,基带信号为m(t),则已调信号为:(设基带信号m(t)的频谱为$M(\omega)$) $$ s_m(t)=Am(t)\cos\omega_ct $$ $$ S_m(\omega)= \frac{A}{2}[M(\omega + \omega_c) + M(\omega - \omega_c) ] $$ 可以看到,幅度调制就是把基带信号的频谱搬移到$\omega_c$处,再乘以1/2 。是线性变换。 AM调制 $$s_{AM}(t) =[A_0+m(t)]\cos\omega_ct$$ $$ S_{AM}=\pi A_0 [ \delta(\omega + \omega_c) + \delta(\omega - \omega_c) ] + \frac{1}{2}[M(\omega + \omega_c) + M(\omega - \omega_c) ] $$ 为使用包络检波的方式进行解调,要求 $|m(t)|<=A_0$ clear all; %% AM调制 fs = 800; % 采样速率,单位kHz dt=1/fs; % 采样时间间隔,单位ms T = 200; % 采样的总时间。频谱分辨率(df=1/T)。 t = 0 : dt

BUAA_OO Summary——多项式求导问题

断了今生、忘了曾经 提交于 2020-11-18 20:40:25
  从C、DS、计组一路折磨过来, 几乎都在采用过程化、函数式的编程思想。初接触面向对象的项目开发,经过了三周的对多项式求导问题的迭代开发,经历了设计、coding、测评环节,算是对面向对象有了一定的认识,这个过程总结了一些经验,在这里希望和大家一起share,欢迎大家给我提意见。    一、关于代码架构    1、第一次作业      主要设置了3个class   PolyComputer作为主类,进行I/O操作,正则表达式匹配,项的提取,合并同类型,排序这些操作   PolyTerm表示每一项,包含项的基本特征系数和指数,constructor(处理每个String项,提取系数和幂),以及获取和修改系数和指数,转化为String这些Methods.   PolyDerivation继承PolyTerm,修改构造器,继承PolyTerm的Methods.      整体思路分析:   1、在PolyComputer类中,使用正则表达式匹配每一项,并提取项之间的符号。(一项一项匹配可以有效防止爆栈问题,当然还可以使用独占模式进行匹配来避免,我会在后面的作业 使用到,这里推荐一个学习链接 https://blog.csdn.net/weixin_42516949/article/details/80858913 )   2、在PolyComputer类中,把提取出的符号和项进行合并

使用Java根据经纬度计算两点之间的距离

泪湿孤枕 提交于 2020-11-17 06:11:07
原文来自: https://www.j1angrui.cn/article/2019012115 在项目开发中遇到一个问题,在已知两点的经纬度现在需要计算出两点之间的距离,在刚接到这个需求时还在想这要怎么做?怎么实现?应该很难吧?通过查阅资料后发现其实也就几句代码的事情,虽然现在我还看不太懂这些代码的具体意思,为什么是这样实现的,但是项目需要,先解决问题之后再考虑深入查看一下代码。先将代码贴出记录一下: public class test1 { private static double EARTH_RADIUS = 6378.137;// 6378.137赤道半径 private static double rad(double d) { return d * Math.PI / 180.0; } /** * 通过经纬度计算两点之间的距离(单位:米) */ public static double getDistance(double latone, double lngone, double lattwo, double lngtwo) { double radlatone = rad(latone); double radlattwo = rad(lattwo); double a = radlatone - radlattwo; double b = rad(lngone)

FFT快速傅里叶变换算法

◇◆丶佛笑我妖孽 提交于 2020-11-16 04:57:42
1、FFT算法概要: FFT(Fast Fourier Transformation)是离散傅氏变换(DFT)的快速算法。即为快速傅氏变换。它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。 2、FFT算法原理: 离散傅里叶变换DFT公式: FFT算法(Butterfly算法) 设x(n)为N项的 复数 序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次 实数 乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N^2次运算。当N=1024点甚至更多的时候,需要N 2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2) 2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2*(N/2)^2=N+(N^2)/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元

人脸姿态校正算法 附完整C++示例代码

守給你的承諾、 提交于 2020-11-15 18:20:39
在一些特殊情况下,经常需要依据图像中的人脸,对图片进行倾斜矫正。 例如拍照角度幅度过大之类的情况,而进行人工矫正确实很叫人头大。 那是不是可以有一种算法,可以根据人脸的信息对图片进行角度的修复呢? 答案肯定是确认的。 再次例如,想要通过人脸的特征对人物的表情和情绪进行精准判断, 那么这个时候如果能确保人脸没有发现严重倾斜,无疑对准确率判断有一定的帮助。 那么假如一张图片只有一个人脸,其实很好判断,通过眼睛的位置的坐标,根据两眼的直线角度, 就可以计算出修正的角度。 然后旋转图片到对应角度即可。 但是如果,一张图片存在多张人脸的时候该怎么办? 有两种方法: 1.找到最大的那个人脸,以它为基准 2.找到频次最高的人脸角度,以频次为基准 当然在大多数情况,方法1是比较合理的。 这两个种情况就留给各位看官去实现了。 本人仅仅考虑一张人脸的情况,演示如何实现该功能。 倾斜角度计算的代码如下: float diffEyeX = right_eye_x - left_eye_x; float diffEyeY = right_eye_y - left_eye_y; float fAngle; float M_PI = 3.1415926535897932384626433832795f ; if (fabs(diffEyeX) < 0.0000001f ) fAngle = 0 .f; else

粒子群优化算法PSO及matlab实现

好久不见. 提交于 2020-11-15 07:11:46
算法学习自: MATLAB与机器学习教学视频 1、粒子群优化算法概述 粒子群优化(PSO, particle swarm optimization)算法是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法,该算法最早由Kennedy和Eberhart在1995年提出的,该算法源自对鸟类捕食问题的研究。   • PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用 位置、速度和适应度值三项指标表示该粒子特征 。   • 粒子在解空间中运动,通过跟踪 个体极值 Pbest和 群体极值 Gbest更新个体位置,个体极值Pbest是指个体所经历位置中计 算得到的适应度值最优位置,群体极值Gbest是指种群中的所有粒子搜索到的适应度最优位置。   • 粒子每更新一次位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度值更新个体 极值Pbest和群体极值Gbest位置。 在每一次迭代过程中,粒子通过个体极值和群体极值更新自身的速度和位置,更新公式 如下:                2、粒子群优化算法与遗传算法对比 • 相同点:   种群随机初始化   适应度函数值与目标最优解之间的映射 • 不同点:   PSO算法没有选择、交叉、变异等操作算子   PSO有记忆的功能   信息共享机制不同