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

原创 Ibeacon一维小项目
概述这个项目主要是定位50米走廊的位置,共有5个Ibeacon设备,每隔10米放置一个。显示也不像之前放在pc端上显示,而是实时显示在手机屏幕上。Android扫描到Ibeacon设备的RSSi后,先进行卡尔曼滤波,得到一个相对稳定的RSSI,再根据可调的距离算法(该距离算法是买IBeacon设备厂家提供的算法,其实也是一个衰减模式)获得距离。距离进行sma平滑后,通过5个ibeacon设备相互...
2018-12-09 22:42:27
5252
137

原创 室内定位主页
前言这个分类主要介绍室内定位的一些常用方法和基本知识。博主也是室内定位的纯小白,一点点摸索写的。安卓更是没接触过,安卓代码奇丑无比,还请见谅。最后,希望我的一点点知识能解决你的一点问题。RSSI定位学习本章主要是博主一边学习一边写的,现在来看还是有些小问题,如下蓝牙RSSI定位入门到精通(1)—三点定位蓝牙RSSI定位入门到精通(2)–指纹法蓝牙RSSI定位入门到精通(3)-指纹...
2018-12-08 23:51:49
9387
2
原创 匀速直线运动的模糊图像的盲复原的复现
前言很久没写博客了,学习的效率很低,还是觉得要写博客作为学习的驱动力。。。之前看了几篇图像复原论文,做个笔记。主要参考:1–南昌航空大学硕士论文–运动模糊图像复原研究2–中国科学院大学硕士论文–图像的运动模糊复原算法研究一 名称解释运动模糊:当图像采集设备图像场景发生相对位移,不论是采集设备运动还是背景中目标在运动,都会使采集的图像发生降质,产生图像模糊。前者是整个图像场景发生模糊,是空间不变型,只有一个模糊核,本文主要研究该类型。后者是目标发生移动,是空间可变型,可能有多个模糊核。空间不
2021-06-16 18:45:48
4055
原创 蓝牙5.1核心文档卷6B部 --恒定音扩展和 IQ 采样
2.5 恒定音调扩展和 IQ 采样将蓝牙5.1核心文档中aoa测向方面的内容进行摘取,本篇来源于蓝牙5.1核心文档卷6B部 --恒定音扩展和 IQ 采样2.5.1 固定音扩展名的结构和类型恒定音扩展名的长度可变。它应至少为 16 μs,并且不大于 160 μs。内容是一个 由 1 组成的连续调制序列。恒定音扩展的前 4 μs 称为保护周期,接下来的 8 μs 称为参考周期。在参考周 期之后,恒定音扩展由一系列交替的开关槽和采样槽组成,每个开关槽和采样槽的长度分别为主机指定的 1 μs 或 2 μs。
2020-07-25 13:55:00
2271
原创 蓝牙5.1核心文档卷8--低功耗测向
8 使用蓝牙低能耗进行方向查找将蓝牙5.1核心文档中aoa测向方面的内容进行摘取,本篇来源于卷8–低功耗测向一个LE设备可以通过发送定向发现的数据包来使其对等设备进行方向查找。使用来自多个发射机的方向信息并提供其位置的配置文件级别信息,LE设备可以计算自己的位置。LE 未编码PHY支持此功能,但 LE编码PHY不支持。8 .1 到达角(AOA)方法LE 设备可以通过使用单个天线发送启用测向的数据包来使对等设备可以使用其方向。对等设备由RF开关和天线阵列组成,在接收部分数据包的同时切换天线并捕获
2020-07-25 13:47:38
1136
原创 蓝牙5.1到达角和离开角定位技术(aoa/aod)
蓝牙5.1到达角和离开角技术(aoa/aod)蓝牙到达角和离开角是新兴技术,可用于跟踪资产以及室内定位及寻路基于相位的测向系统需要天线阵列,正确的天线阵列和算法设计对于RTLS系统必不可少,为了运行算法需要RF开关/多通道,ADC处理的能力,出色的DoA算法通常在计算上并不便宜。其他比较技术包括基于RSSI的定位系统和到达时间原理到达角在“到达角”中,被跟踪设备正在使用1根天线发送特殊的信标信号接收的设备被称为定位器将多个天线排列成阵列,依次切换当前活动的天线时,从接收到的信号进行IQ采样根
2020-07-25 13:37:44
12347
2
原创 [音频处理]傅里叶变换去噪
写在前面不是科研狗,基础理论薄弱,写的比较匆忙,有理解有误的地方还请理解和指正。网上大佬们写的傅里叶公式推导,证明已经很多了(瑟瑟发抖),我这里主要是讲傅里叶的应用,不涉及公式证明,而是直接拿起公式使用。由于自己获取知识也是看大佬们博文理解学习得来的,所以图片中多少有一些是别人的图,不过我附上了别人的链接。看完这篇你能收获到:1 傅里叶变换的原理2 傅里叶变换在音频的应用3 离散傅里叶变换处理音频的C语言代码及讲解背景最近接触音视频处理比较多,就遇到了采集的音频数据有噪音的情况。可不可以用
2020-05-31 21:12:50
10799
2
原创 [arm开发]交叉编译及tcpdump
1 交叉编译链的命名规则命名规则:arch [-vendor][-kernel][-system]arch:体系架构,如ARM, MIPSvendor:工具链提供商kernel:目标内核system:目标系统2 交叉编译中的build,host和target–build=编译该软件所使用的平台–host=该软件将运行的平台–target=该软件所处理的目标平台3 交叉编译tcpdump下载好需要的编译链工具,在profile配置环境变量在官网下载tcpdump和它的依赖li
2020-05-22 22:06:26
1031
原创 [http-flv]flv.js和nginx-http-flv的推流和拉流
前言之前用nginx-rtmp模块进行测试,但rtmp协议需要使用flash,所以使用rtmp不是一个明智之举。今天又测了下nginx-http-flv模块,基于nginx-rtmp模块。一 nginx-http-flv环境搭建需要下载nginx和nginx-http-flv1nginx-http-flv下载可以直接下载git clone https://github.com/winshining/nginx-http-flv-module2 nginxnginx下载官网地址nginx安
2020-05-16 22:32:39
4873
5
原创 [nginx-rtmp]ffmpeg+video-js的推流和拉流
晚上十点过了,匆匆做下笔记赶紧碎觉一nginx-rtmp配置安装好nginx-rtmp 修改配置如下rtmp默认监听1035端口,同时监听80端口worker_processes 1;error_log logs/error.log info;events { worker_connections 1024;}rtmp_auto_push on;rtmp { server { listen 1935; chunk_size 4096;
2020-05-11 22:17:26
1514
4
原创 [nginx]日常配置笔记
前言多日不用nginx 怎么打开都忘记了,今天又熟悉熟悉,记录下笔记一 命令启动 nginx关闭nginx验证nginx配置文件是否正确重启二 代理和负载均衡127.0.0.1/baidu.com 代理百度127.0.0.1 负载均衡upstream wwwdemocom { #负载均衡 轮训加权-缺点 一个连接满了 还会继续访问导致变慢 server 127.0.0.1:8010 weight=1 fail_timeout=30s max_fails=10; serv
2020-05-10 16:50:51
237
原创 [音视频]概念汇总笔记
前言视音频的一些概念,不定期添加,以备遗忘快速回忆。0x01总体借用雷神的图片,分为协议层(rtmp,rtsp等),封装层(mp4,avi等),编解码层(aac,mp3,h264等),原始数据层(yuv420p,pcm等)0x02 码率/比特率码率就是比特率,是数据传输时单位时间传送的数据位数,一般我们用的单位是Kbps,意为“千位每秒”。如1000Kbps,一秒传输1000*102...
2020-04-23 18:03:36
455
原创 [FFMPEG]音频pcm编码为AAC学习及代码
一 整体结构创建一个aac的编码器,通过该编码器配置一个编码器上下文。采集足够的pcm数据进行重采样,封装为一帧,发送给aac编码器上下文,由aac上下文获取一个包(aac的data)。封装一个aac的head,head+data 一起写入aac文件。需要的ffmpeg结构Aac转pcm涉及编解码层和原始数据层,所以需要对应层级的数据结构进行处理AVCodec *codec;AVCo...
2020-04-22 15:29:59
1676
2
原创 [音频]G711编码原理学习及代码
介绍g711常用在嵌入式方面,采样率为8k。g711 标准下主要有两种压缩算法。一种是u-law,另一种是A-law。两者都是对一个采样进行压缩,区别在于g711-a将13位转换为8位压缩数据,g711-u将14位转换为8位压缩数据。压缩比固定为:8/14 = 57% (uLaw)8/13 = 62% (aLaw)但事实上写代码的时候,常常将16位转换位8位。压缩比为50%测试一...
2020-04-18 15:58:56
2357
原创 图--遍历--广度/深度优先搜索
记录贴膜小哥的学习笔记和代码。前言图的遍历有广度优先搜索和深度优先搜索。这里用一个迷宫游戏作为例子。五乘五的方格是一个迷宫,四周和白色方块为墙,灰色为路径。0为起点,24为终点。这个迷宫就是一个简单的图,通过遍历解决问题。广度优先搜索广度优先搜索是图的层次遍历。他有如下特点:1–占用空间大2–不进行回溯3–常常使用队列实现完整代码1–先求出迷宫的邻接矩阵。25 * 25的数...
2019-07-03 23:43:26
281
1
原创 串--KMP模式匹配算法理解笔记
前言记录贴膜小哥对KMP模式匹配算法的粗浅理解以及笔记详细学习可以参考这篇–KMP不错的讲解。引言由于朴素模式匹配算法的低效O(n*m),所以有三位前辈研究出了O(n+m)的匹配算法–KMP朴素算法的低效在于,匹配不成功时候,主串和子串都要进行回溯。KMP算法的优越性在于,主串不用回溯,且子串重复部分也不用回溯。理解KMP算法的关键在于理解F数组:1-什么是F数组2-F数组如何生成...
2019-07-01 21:43:55
481
原创 栈--四则运算表达式实现
栈的一个常见应用,四则运算表达式求值。主要有两个步骤:1,中缀转后缀2,后缀求值实现起来比较简单,我通过c++的容器stack实现一遍。结果9+(3-1)*3+10/2=20实现step1 中缀转后缀从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即称为后缀表达式的一部分,若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶符号(乘除优先加减)则栈顶元素依次...
2019-06-30 20:56:48
436
原创 MQTT协议浅析和测试
MQTT是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。搭建由于我使用的windows环境(主要是懒哈哈),所以使用...
2019-06-22 15:48:18
1821
原创 一个简单的libevent网络库封装
前言本文不会讲libevent如何使用,只提供一个简单的c++ libevent 封装。封装的功能提供网络连接事件,网络断开事件,读数据事件,使用时候重载该虚函数即可。提供定时器功能,定时向连接的客户端发送数据。主要逻辑1,libeventSer—该类是网络服务的主体,对外提供StartListen(int Port);和AddTimerEvent()两个接口,使用时候继承改类,重...
2019-06-19 20:51:46
941
原创 蓝牙定位--多点质心定位
废话不多说,直接上干货,后附已验证通过的质心算法总体逻辑step1在理想环境下,已知三个信标的坐标和到坐标的距离,使用三点定位能获得三个圆的交点,从而得到位置。而现实情况下却情况难料。这时候使用质心法来解决复杂的位置定位strp2所谓质心,就是横坐标、纵坐标分别为N个点的横坐标平均值、纵坐标平均值的点。即:假定N个点的坐标分别(x1,y1),(x2,y2),……,则质心的坐标为...
2019-05-28 21:57:05
4719
15
原创 STL算法
rangge(区间)所有的算法都是用来处理一个或者多个区间内的元素,为了操作元素的某个子集,我们必须将区间首尾按照两个实参传给算法,我不是一口气将整个容器传递过去。我们必须保证两个迭代器必须属于同一个容器,且前后放置正确,否则后果难料。stl的区间都是半开区间,也就是包括前面的迭代器而不包括后面的迭代器。按照算法的参数,划分为:1 function(sou-range)算法的参数中只有源区...
2019-05-26 22:02:22
195
原创 迭代器之适配器
任何东西,只要其行为类似迭代器,它就是一个迭代器,标准库提供了数个预定义的特殊迭代器,也叫做迭代器适配器。使用前需要加上 #include<iterator>1,Insert iterator安插型迭代器2,Stream iterator串流迭代器3,Reverse itreator逆向迭代器4,Move iterator搬移迭代器1,Insert iterator安插型迭...
2019-05-26 17:06:29
192
原创 STL容器
总体按照不同的需要,容器可以分为三类:序列式容器,关联式容器,无序容器序列式容器vector和deque虽然可以随机访问,但不能通过[ ]进行赋值,list无法使用[ ],只能通过front()或者迭代器访问元素。list和deque都可以双向访问,故多了push_front()#include<vector>#include<deque>#include&...
2019-05-25 16:32:24
234
原创 概率论与数理统计--基本概念笔记
概率论与数理统计是人工智能的基础中的基础啊,赶紧学习一波。1随机试验1 相同条件下可重复进行2 结果多样,实验前可能的结果是确定的3 实验前不确定具体的结果2样本空间随机试验的所有可能的基本结果的集合3 随机事件样本空间的子集称为随机事件空集为样本空间的子集,空集称为不可能事件样本空间为样本空间的子集,样本空间为必然事件事件的关系包含:A发生,B必然发生,则A⊂B...
2019-05-12 17:44:27
1695
原创 编写web服务器来理解HTTP协议
前言先说说弄了个什么,访问web服务的80端口,简单的web服务器解析http协议后,发送当前目录的index.html给浏览器,输入xxx,服务器回应hello word:xxx。GET 请求敲击127.0.0.1 会默认访问本机的80端口。服务器得到的数据如下第一行 GET / HTTP/1.1 表示get请求,使用1.1版本,中间的 / 为get所带的参数,比如 G...
2019-05-12 15:58:22
298
原创 QT--摄像头使用笔记
一个简单的demo,使用电脑内置摄像头,拍照,并在当前目录保存截图,效果图。一添加media模块使用camer需要使用3个类QCamera类用于打开系统的摄像头设备QCameraViewfinder用于显示捕获的视频QCameraImageCapture用于截图#include <QCamera>#include <QCameraViewfinder>...
2019-05-11 21:30:40
699
原创 散列加密--MD5原理
介绍MD5是一种散列算法,它输入任意长度的原文,通过一个散列算法,会得到固定长度128位(16字节)的散列值。由于修改原文一点数据,获得的散列值完全不同,常常用在放置数据篡改,数字签名,以及如linux登录密码存储的安全认证中原理typedef struct{ unsigned long relute[4];//输出的16字节,初始状态为4个幻数 unsigned char block...
2019-04-27 17:29:32
537
原创 数据结构--线性表3
前言每天要学习的太多,今天花大量时间敲完静态链表的代码,发现后面还有循环链表,双向链表,这样学习效率太低。所以后面不打算把伪码重新实现一遍,只记录学习的要点等。静态链表通过物理的线性结构实现逻辑的链式存储,下标由0开始,及S[0]为第一个数据。typedef struct{ ElemTpye data; int cur; /* 游标(Cursor) ,为0时表示无指向 */} C...
2019-04-17 20:14:36
176
原创 算法思想--穷举/递推/递归/分治/概率思想
穷举最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况。穷举算法效率不高,但是适合一些没有明显规律可循的场合。比如记载于《孙子算经》之中的鸡兔同笼问题,适合用穷举思想解决。今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?遍历鸡的个数,从0到35个,得到兔的个数,判断是否满足条件int qiongju(int head, int foot, int * chicken, i...
2019-04-11 22:43:32
899
原创 对称加密--(cbc)DES原理及完整源码
前言在csdn上找了几份关于des的源码,要么不支持cbc要么转换出来结果不对(观看源码大多是填补的方式不同,多样)。所以自己用c写了一个支持大数据的cbc-des库,未来还会在库里添加其他的加密方式。使用时候修改.h,进行裁剪,在文件里放入明文就行了。亲测可行,需要的留下邮箱/*======================SIMPLE_DES======================...
2019-04-10 21:23:57
2864
12
原创 数据结构--线性链表
线性表的链式存储结构顺序存储结构逻辑和物理都相邻,有随机访问的优势,也有插入删除时时间复杂度高的缺点,链式结构正是为了克服这个缺点,它不要求物理相邻,它也可以物理相邻,所以我们只关系它的逻辑结构。线性链表每个节点有一个数据域,也有一个指向下一个节点的指针,开头可以有一个头节点指向第一个节点,最后一个节点指针域为NULL,也就是若为空表,则头节点的指针域为空,若销毁链表,则头节点一起销毁。t...
2019-03-31 22:07:09
698
原创 告别VM,快捷安装虚拟机Hyper -v(安装和问题解决)
win10/8 的操作系统自带有虚拟机,因此我们不用再辛苦的下载VM。使用之前我们需要先准备好镜像,如果你安装的是ubuntu或者win10,可以选择在虚拟机里在线安装(速度慢)。这里我使用的是本地安装镜像ubuntu 18.04。需要的可以在Ubuntu官网下载种子(速度快)。ubuntu各版本镜像安装虚拟机一在屏幕左下角搜索栏,输入控制面板。二在控制面板中找到 程序,并进入找到启...
2019-03-30 12:01:01
3667
1
原创 数据结构--线性表
前言数据结构在两年前就学过了但以前都是走马观花,现在重拾起来,总结归纳,最后把各种结构和算法用c重写一遍。线性表的定义抽象数据类型定义ADT 线性表(List)Data 在数据元素的非空有限集中,存在唯一一个首元素(有唯一的后继)和唯一一个末尾元素(有唯一的前驱),其他中间元素(有唯一前驱和后继)。数据元素之间的关系是一对一的关系。Operation InitList...
2019-03-28 00:05:47
351
原创 文件系统源码剖析
主要介绍专门为小型的嵌入式系统而设计的基于FAT32的fatfs文件系统,。它完全用标准C 语言编写,可以轻松移植到8051、SH、 Z80、H8 和ARM 等系列单片机上。前言FAT结构和原理不会细讲,具体可以参考这一篇详解FAT32文件系统本文的文件系统会裁剪掉LFN,多分区,PAGE CODE等,源码解析的主要是核心源码,源码都有很详细的注释原理一 FAT文件系统的组织形式MB...
2019-03-20 22:06:55
1682
原创 内存管理原理
一堆区管理内存管理也就是堆区的管理,不管是BSS还是栈区那些都由系统分配以及管理的,所以内存管理主要实现malloc以及free等函数,在代码运行时,分配和释放内存。二管理的原理#define BLOCK_SIZE 32 //内存块32字节#define MAX_SIZE 1024 //堆区分配1K字节 #define TABLE_SIZE MAX_SIZE/BLOCK_S...
2019-03-17 21:34:25
343
原创 SPI FLASH (一)
一 SPI 协议spi了解spi也叫串行外围设备接口,它具有高速,全双工,实时的特点,主要用在STM32连接FLASH,实时时钟,AD转换器,还有数字信号处理器等外设上。主从模式SPI没有发送者和接收者,它是一个环形结构,发送1Bit的数据同时也会接收1Bit的数据。SPI中将两者划分为主设备和从设备,可使用的连接方式:一主连一从或者一主连多从。通信的信号线实现完整的spi功能,需要4...
2019-02-24 21:10:57
2026
原创 装饰模式
使用当我们需要在一个类中增加一定的功能时候,常常想到增加子类扩展功能,但如果需要给5个同级类增加相同的功能,就需要写5个子类。而在基类上进行修改增加功能不但混淆了核心功能更违背了开闭原则,这时候就需要使用装饰模式概念动态的给一些对象增添一些职责,就增加功能来说,装饰模式比增加子类更灵活。它把每个要装饰的功能放在单独的类中,并让这个类包装所要装饰的对象,当需要执行特殊行为时候,客户代码就可以根...
2019-02-21 22:33:28
186
原创 策略模式
策略模式作用在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。策略模式定义了完成相同工作的算法家族,分别封装起来,让他们之间可以相互转换,使算法的改变不会影响使用算法的客户。这样减少了各种算法和使用算法之间的耦合,由于每个算法都有自己的类,通过自己的接口单独测试,简化了单元测试。UML模型构建一个基类CashSuper,cash1,cash2继承该基类,context类...
2019-02-20 20:47:13
208
原创 室外定位--STM32的GPS定位
前言相比于室内定位,GPS定位已经很成熟了,主要是获取到星历报文后,解析GPGSV,GPGGA,GPGSA等后,获得经度和维度,再通过纠偏,去噪,抽稀,绑路等操作后,显示在地图上。获得星历数据使用的是GPS模块,通过spi与stm32连接。先用AT指令对GPS模块进行配置,以及接收GPS数据。1.使能GNSS模块2.配置GNSS3.查询星历当定位成功后,就会返回有效的星历数据。...
2019-01-27 21:59:36
13299
7
原创 RCC的复位和时钟
一 时钟STM32为了降低功耗,实现了比较复杂的时钟系统。在需要使用某个外设,需要启动时钟,也可以为了降低功耗,将一些时钟关闭。时钟树如下图,标记了红色,橙色和蓝色红色:为时钟的4个时钟源(HES)(HSI)(LSE)(LSI),stm32中有高速,低速两个时钟,可以外接高低两个时钟,高速外部时钟,可以接3-25MHZ振荡器,而往往接的是8mhz的。4个时钟都可以根据需要关闭或者开启。...
2019-01-27 15:26:30
1056
cbc_des.rar
2020-05-22
选择模型--socket源码
2018-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人