- 博客(44)
- 资源 (8)
- 问答 (1)
- 收藏
- 关注
原创 并发与竞争
Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源,就和共享单车一样。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。并发就是多个“用户”同时访问同一个共享资源。Linux 系统是个多任务操作系统,会存在多个任务同时访问同一片内存区域,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱。针对这个问题必须要做处理,严重的话可能会导致系统崩溃。
2024-12-26 21:50:30
756
原创 毫米波雷达点云 DBSCAN聚类算法
DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数的阈值。给出算法中用到的定义:● ϵ领域:对于xj∈Dx_j \in Dxj∈D。
2023-05-28 11:43:10
6065
1
原创 CFAR(恒虚警率)目标检测算法
CFAR算法的基本思想是,对于每个雷达测量的数据点,以该点为中心,建立一个检测窗口,在该窗口内计算信号功率的平均值和方差,并将该窗口划分为若干个子窗口。然后,根据期望的误检概率和背景噪声的统计特性,计算出每个子窗口的阈值,用于判断该窗口内是否存在目标信号。
2023-04-14 21:01:06
14581
原创 AWR2243cascade radar MIMO后处理梳理
这两个文件是ADC数据读取和校准模块的输入。然后,数据被重新格式化为4D矩阵,其维度为每个啁啾点的样本、每帧啁啾点、RX通道的数量和TX通道的数量。parameter_file_gen_json函数的作用就是将数据文件夹的配置文件、校准文件统一的写进test1_param.m文件中,test1_param.m文件是用以下的代码定义。在后处理的matlab代码中,所有模块都有datapath函数,在调用时都是调用同名函数,根据传入的结构体来区分,在调用时将相应的结构体传递给相同名字的函数即可。
2023-04-03 17:22:34
9713
14
原创 FMCW基本原理 2023年3月20日22:06:57更新
对FMCW信号进行理论推导分析,描述毫米波雷达数据的2DFFT数据梳理方法以及各个维度之间的关系
2023-03-20 22:08:46
3494
原创 shell 学习笔记(最近更新:2022-02-18)
文章参考PHP中文网目录1. shell 简介2. first demo3. shell 变量3.1 变量定义3.2 使用定义过的变量使用一个定义过的变量,只要在变量名前面加美元符号即可,如:已定义的变量,可以被重新定义只读变量 用readonly修饰删除变量3.3 shell字符串拼接字符串获取字符串长度提取子串3.4 数组定义数组读取数组数组长度4. Shell 传递参数5. shell运算符5. shell运算符1. shell 简介shell是一个命令行解释器,将用户命令解析为操作
2022-02-18 18:12:41
796
原创 kalman 一维递归算法 MATLAB演示
% 情景:对一个物体的长度进行测量% 变量:% XK0 :初始估计值% Xk :当前估计值% ZK :第K次测量值% ZK0 : 第一次测量值% EMEA :第K次测量误差(不考虑系统测量噪声,默认为一个定值)% EESTK : 第K次估计误差% EESTK0 : 初始估计误差(初始给一个定值)% KK0 :初始卡尔曼增益% KK :卡尔曼增益% 步骤一:计算kalman增益:KK% 第一次计算:KK0 = EESTK0/(
2021-11-19 14:18:28
566
原创 (1)C++基本数据类型(枚举、共用体)
基本数据类型char1 个字节-128 到 127 或者 0 到 255unsigned char1 个字节0 到 255signed char1 个字节-128 到 127int4 个字节-2147483648 到 2147483647unsigned int4 个字节0 到 4294967295signed int4 个字节-2147483648 到 2147483647short int2 个字节-32768 到 32767
2021-10-11 12:25:55
442
原创 常用软件数值滤波方法(一)已实用
单片机采集adc数据,毕竟都是杜邦线工程师,数据难免在某些时刻有较大的误差,这个时候一个合适的数值滤波算法就是很好的solution!冒泡排序先复习一下冒泡排序,因为比较多的算法都是先对数据进行排序再做处理,这里就不解释什么是冒泡排序了,直接copy下面的代码就行。 for (j = 0; j <11; j++) //数组长度为11 { for (i = 0; i < 11-j-1; i++) {
2021-07-26 00:06:51
1185
原创 根据卫星的方位角和仰角画卫星星空图(QT实现)
作者:haomingHuemail:hhm_master@163.com需求:在0183格式中,根据GNGSV中的卫星仰角和方位角去绘制卫星星空图如图:目标:实现一个卫星的映射名词解释:方位角:从标准方向的北端起,顺时针方向到直线的水平角称为该直线的方位角。方位角的取值范围为0°~360°。,就是卫星相 对于测量点的方向,正北方向为0 度,顺时针递增。仰角: 视线在水平线以上时,在视线所在的垂直平面内,视线与水平线所成的角叫做仰角.就是在地平面上,要抬头多少度,才能望到卫
2021-05-09 22:20:51
5464
1
原创 m序列 MATLAB仿真
m序列概念m序列是最长线性移位寄存器的简称。顾名思义,m序列是由多级移位寄存器中,若N为移位寄存器的级数,n级移位寄存器共有2^n 个状态,除去全0状态外还剩下不2^n-1种状态,产生 m序列的线性反馈移们寄存器称作最长线性移位寄存器。产生m序列的移位寄存器的电路结构,其反馈线连接不是随意的,m序列的周期Р也不能取任意值,而必须满足p=2”-1,式中,n是移位寄存器的级数。码序列的表征一般用特征多项式和结构图表示,如下:4和5表示那两位寄存器的值进行模二加,模二加:相同为0,相异为1,就等同于做异
2021-05-02 23:12:38
7632
9
原创 GPS NMEA协议,0183 定位数据格式 双模定位:GNXXX GPS+BD 完整版
作者:haomingHuemail:hhm_master@163.com背景:最近需要在imx6ull 的Linux板子上面接收定位模块的0183格式的数据并进行解析,并且用QT实现,绘制定位信息各种数据的动态曲线图GPS NMEA协议,0183 定位数据格式 双模定位:GNXXX GPS+BD双模单模的区别有没有北斗卫星的数据,如果是GN开头的数据则不做区分,如果是GP或者BD开头的数据则要进行区分。数据帧格式:$aaccc,ddd,ddd,…,ddd*hh1、“$”——帧命令起始位2
2021-04-26 00:01:06
7437
2
原创 QT5 关于object基类实现的多线程操作,movetothread方法的使用
背景:在limx6ull的Linux开发板上面,对0183格式的GPS/BD 数据进行解析,使用串口接收操作,由于GPS/BD模块每秒输出一组数据,一组数据有13帧(使用的是中科微的双模定位),需要对数据进行实时的解析,这个时候需要开一个线程去做接收或者解析。以下内容纯属个人对QT线程的理解,仅供参考在QT5中关于多线程的操作基本分为两种: 第一种就是集成QThread模块,重新写run函数,run是线程的执行内容函数,这个方法我认为它不是一个真正意义上的线程,因为它和旧线程依然有很大的关系,第二种
2021-04-25 15:05:42
633
原创 Linux&imx6ull 使用QT开发串口工具(完整版)
Linux&imx6ull 使用QT开发串口工具(完整版)1.扫描串口这篇博客中讲到的东西可能在实际的开发中并不实用,但是这个属于学习阶段,会加强QT的学习已经达到触类旁通的效果这次的代码主要是在Linux中使用QT实现串口通信,现在ubuntu上成功的实现,然后在移植到imx6ull开发板上面,作为我的第一个嵌入式应用这次的.ui的文件我上传到我这个账号的资源下载,我的资源基本都是免积分下载的,大家有需要的可以自己下载,也可以自己设计自己的uiUI文件下载链接UI界面截图如下:说
2021-04-11 19:15:52
1382
1
原创 (7)pyqt5教程--->窗口属性和基本控件(持续更新)
1.窗体设置设置窗体名称setWindowTitle(‘title’)设置窗体图标self.setWindowIcon(‘image path’)更改窗体大小self.resize(height, wide)获取窗体大小self.size()获取窗体宽度self.width()获取窗体高度self.height()禁止拉伸窗口大小self.setFixedSize(width,height)禁止最大化self.setWindowFlag
2021-03-29 13:08:33
1591
原创 GNSS接收机技术以及应用复习
time:2021-03-27ar:haomingHu#考试复习专用,仅供参考1.GPS GNSS 名词解释(1)GPS:Global Positioning SystemGNSS:Global Navigation Satellite System全球导航卫星系统:美国的GPS、俄罗斯的Glonass、欧洲的Galileo、中国的[北斗卫星导航系统](2)GPS特点实现全球全天候连续的导航定位服务定位精度高观测时间短测站间无需通视仪器操作简便GPS具有更强的适应性,对环境的要
2021-03-28 01:08:50
2975
3
原创 (6)pyqt5--->窗口跳转(注册登录功能)
GitHub连接:本专栏所有源代码的GitHub直通车上一篇已经讲了连接信号和槽的另外一种方法这篇博客本来在2020年年末就应该发出来了,一直拖到现在! 在复习的空闲,能够去写一下舒心的东西真的享受这次主要的内容就是界面跳转实现登录功能我用的办法比较的笨拙,但是能用。其实只要完成一个事情就完全OK了:当你的登录按钮的click时间被处触发的时候,你连接的槽函数应该是你自己的登录API,当然我这次用的是我自己服务器的登录接口函数,你们使用的时候换成自己的登录API就可以,话说回来,如果你验证成功
2021-03-27 00:54:05
3303
6
原创 (5)pyqt5--->连接信号和槽的另外一种方法
GitHub连接:本专栏所有源代码的GitHub直通车上一篇已经讲了如何去自定义信号和槽以及使用和传参这篇就是讲一下信号和槽跟装饰器之间的关系什么是装饰器装饰器(Decorators)是 Python 的一个重要工具,装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能(可以认为它就是一个可以修改其它函数的功能的函数),装饰器的返回值也是一个函数对象。...
2020-12-16 20:43:20
1125
原创 (4)pyqt5教程--->自定义信号和槽(超级绕....)
GitHub连接:本专栏所有源代码的GitHub直通车上一篇已经讲了如何去使用对象自带的信号和槽这一篇是比较绕的,反正我第一次看见,我是挺晕的。在明确一下吧用下面的这个图来明确一下首先我们得知道,谁(发送者)发送了什么信号(信号)给谁接受者,谁接收到了信号并去执行了什么函数(槽函数)先上代码吧ui文件代码# -*- coding: utf-8 -*-# Form implementation generated from reading ui file '03.ui'## Crea
2020-12-14 00:10:31
976
原创 (3)pyqt5教程--->信号与槽初试
上一篇已经讲了如何使用QTdesigner生成ui文件并转化为py文件,最终实现界面代码分离的效果信号与槽作是 QT 的核心机制,是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。它为高层次的事件处理自动生成所需要的附加代码。例如在tkinter模块中一个空间 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号和槽取代了这些函数指针。所有 QObject 类都可以使用信号槽,继承自 pyqt
2020-12-12 21:25:54
666
1
原创 (2)pyqt5教程--->使用QTdesigner实现界面代码分离
在上一篇中已经讲了一个pyqt5的基本框架是什么,这篇使用QTdesigner来设计一下界面第一篇:pyqt5的基本框架1、QTdesignerQTdesigner是一个GUI可视化设计软件,我就没有在Python的那个pyqt5 tools里面下,我是通过安装QT5.9.8来获得的,因为后面可能会接触一下使用C++写的QT。这个可视化工具其实是类似于visual base、C#这种语言的,这两种语言设计上位机的时候都可以直接通过拖动来实现GUI界面的设计,然后生成代码,自己只需要去写界面的逻辑代码就
2020-12-12 15:52:14
1043
4
原创 (1)pyqt5教程--->fristwindow(代码结构)
关于pyqt5的特点以及和QT5的联系和区别就不讲了,只有专业开发的大佬可能才会说的清楚一点首先需要先下载PYQT5模块用的是镜像网下载的,网速不好的时候需要在后面几个timeout设置,不然很有可能下载失败(因为包比较大)pip install pyqt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com代码from PyQt5 import QtWidgets##从 PyQt 库导入 QtWidget 通用窗口
2020-12-12 15:22:29
1614
11
原创 AD21下载和安装教程
链接:https://pan.baidu.com/s/1WWSZVLl-SXSEhphArJOufg提取码:6666安装教程(bilibili):https://www.bilibili.com/video/BV1nK4y177yX/
2020-12-07 01:04:45
10923
1
原创 C++基础学习--->运算符重载
运算符重载作用对已有的运算符重新进行定义,赋予其另外一种功能,以适应不同的数据类型,作用:实现两个自定义的数据类型相加的运算运算符重载的本质运算符重载其实就是定义一个函数,在函数体内实现想要的功能,当用到该运算符时,编译器会自动调用这个函数。也就是说,运算符重载是通过函数实现的,它本质上是函数重载。语法返回值类型 operator 运算符名称 (形参表列){//TODO:}operator是关键字,专门用于定义重载运算符的函数,和运算符一起构成函数名加号运算符重载例:将两个对象
2020-09-18 12:44:59
2712
原创 C++基础学习--->类的this指针
this指针介绍this是一个指针,默认被const修饰,也指明了这是一个常量指针,无法修改指向地址,关于this指针,总结为以下三点:this指针指向被调用的成员函数所属的对象this指针是隐含每一个非静态成员函数内的一种指针this指针不需要定义,可以直接使用用途:当形参与成员变量同名时,可以用this指针来区分在类的非静态成员函数中返回对象本身,可以使用: return *thisclass Person{Person(age){//形参与成员变量同名,无法赋值//age
2020-09-18 12:31:19
314
原创 C++基础学习---> 类的基础
C++基础学习---> 类的基础类属性成员的访问权限class和struct的区别对象的初始化和清理构造函数析构函数类的静态属性和成员函数类属性成员的访问权限公共权限:类内可以访问,类外可以访问保护权限:类内可以访问,类外不可以访问 继承中,子类可以访问父类的成员私有权限:类内可以访问,类外不可以访问 继承中,子类不可以访问父类的成员保护权限和私有权限的区别就是在继承中子类是否可以访问父类的成员class Person{ public: string name;
2020-09-16 14:12:02
355
原创 C++基础学习----->函数与各种数据结构
函数与数组函数原型:int sum_arr(int arr[],int n);(数组名可以认为是第一个元素的地址)数组名就是地址,这里的arr可以成为数组首地址也可以当做指针等价于:int sum_arr(int * arr,int n);在C++中当且仅当用于函数头或函数原型的时候,int * arr 和 int arr[]的含义是一样的数据安全①可以修改数组内容:void fModify(int arr[],int n)②不可以修改数组内容:void noChange(cons
2020-08-25 14:25:13
430
原创 C++基础学习---->指针基础笔记
指针的作用:通过指针间接访问内存(指针即是地址)定义一个指针:语法:数据类型 *指针变量名;实例代码:#include <iostream>#include "sum.h"using namespace std;int main() { int a = 5; //定义一个指针 int* p; //让指针指向变量a的地址 p = &a; //通过指针仿真变量a *p = 10; cout << "变量a的地址为:" << &a
2020-08-25 12:40:59
463
原创 C++基础学习---->变量与运算操作
变量与运算操作2.1变量类型(1)变量名(2)命名规则(3)数据类型(4)typedef 声明(5)枚举类型(enumeration)(6)const 限定符(7)Sizeof2.2运算符(1)算数运算符(2)关系运算符(3)逻辑运算符(4)位运算符(5)赋值运算符2.1变量类型(1)变量名①在名称中只能使用字母字符、数字和下划线(_)。②名称的第一个字符不能是数字。③区分大写字符与小写字符。④不能将C++关键字用作名称。⑤以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的
2020-07-19 10:29:03
1002
原创 C++ 第一个demo
第一个C++ Demo这次还是选择了扎扎实实的去看书(C++primer plus ),这本书真的是良心,讲得很细,不过有点小贵,要八十块,现在最新好像是第六版。知识点(1)注释①由前缀 // 表示的内容表示注释的内容②C++ 也支持C语言的注释格式 :/* */③在C99标准中也在C语言中加入了 // 的格式(2)头文件说明①将头文件内容添加到程序,在程序中调用其的内容,也就是经典的预处理器操作。格式1:#include < >—>引用的是编译器的类库路径里面
2020-07-15 22:39:29
1533
原创 STM32定时器3配置时钟的坑
STMf1的配置TIM3我用的是原子的F1精英版,配置定时器3的时候出了点问题问题描述这里是主函数,在TIM3_Int_Init函数中,4999是重装载值,3599是预分频系数计算:如果APB1给TIM的时钟是36M的话,我使用3599预分频之后,那分频之后的频率就是 36M/3600=10K(因为是从零开始计数,所以计算使用3600,但是代码里面要用3599)也就是说每计一个数用的时间就是1/10K = 0.0001s = 0.1ms.我现在计数个数是5000个(0~4999),那时间就是
2020-06-29 00:38:22
6016
6
原创 Python使用socket搭建TCP服务器(后期的客户端:GPRS模块)
socket模块其实不只是Python,例如C#,Java等都会有这个模块百度百科:socket是一种操作系统提供的进程间通信机制。[1] 在操作系统中,通常会为应用程序提供一 组应用程序接口(API),称为套接字接口(英语:socket API)。应用程序可以通过套接字接口,来使用网络套接字,以进行数据交换。最早的套接字接口来自于4.2 BSD,因此现代常见的套接字接口大多源自Berkeley套接字(Berkeley sockets)标准。在套接字接口中,以IP地址及通信端口组成套接字地址(so
2020-06-25 22:34:27
1025
原创 pip下载失败?快换镜像网试试
Python pip下载镜像网在cmd里面使用pip命令下载的时候,速度可以用蜗速来形容,而且如果下载的包比较大的话很有可能是超时导致下载不了,这个时候可以用镜像网下载pip install package -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com将上面命令里面的package换成需要下载的包名就可以直接下载...
2020-06-18 15:08:41
437
原创 IIC实战---》BH1750FVI光照强度传感器
记录一下IIC比较典型应用传感器相关介绍//引脚定义 硬件IC--》复用开漏 普通IO---》通用推挽#define B_LUX_V20_SCL0_O {\ GPIO_InitTypeDef GPIO_ST; \ GPIO_ST.GPIO_Pin = GPIO_Pin_1;\ GPIO_ST.GPIO_Mode = GPIO_Mode_Out_PP; \ GPIO
2020-06-15 23:16:13
5411
1
服务器重新启动,dtu如何重连服务器
2022-08-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人