- 博客(153)
- 资源 (3550)
- 收藏
- 关注
原创 qt中 STL类型迭代器中的隐式共享
代码中,如inr>sies0通间的是一个OLtcim心列表对象sizs,但是实陈上代码并不将spitcr>izs0表示。的到表内容完全复制给变量sizc,只是传递给它一个指针。一个对象被施式共享,只是传道该对象的一个指针。给使用者,而不实际复制时象数据,只有在使用者修改数据时,才实质复制共享对象给使用者。对于STL类型的送代器,隐式共享还涉及另外一个问题,即当有一个选代器在操作一个容隔。的数据复制给sizes,这样避免了不必要的复制,减少了资源占用。变量时,不要去复制这个容器变量。下面的代码是正确的。
2025-07-10 09:43:08
144
原创 linux内核中的链表实现
Linux内核链表的实现方式独特,它通过将链表节点(list_head)嵌入数据结构中,而非传统的数据包含链表节点方式。核心结构list_head仅含前后指针,而实际数据结构(如fox)则包含list_head成员。这种设计配合container_of宏实现高效访问:该宏通过成员指针、类型和成员名,反向计算出包含该成员的完整结构体地址。其原理是利用编译时固定的成员偏移量,通过指针运算实现地址转换。这种方案在内核开发中非常实用,但依赖于GNU C扩展,需注意跨平台兼容性。
2025-06-25 23:27:46
689
原创 path.toStdString(); // 或 path.toUtf8().constData() } 效果一样吗
toStdString() 的编码取决于系统区域设置(通过 SetConsoleOutputCP 或系统代码页):// 若系统代码页为 CP936(GBK)安全选择:优先使用 path.toUtf8().constData() + std::filesystem::u8path(),确保UTF-8编码一致性。// 可能编码错误!path.toUtf8().constData() => “C:/测试/文件.txt”(强制UTF-8编码)// 正确方式(跨平台UTF-8)// 错误方式(依赖本地编码)
2025-06-18 12:12:12
428
原创 基于多传感器融合的高精度定位策略:Lidar/GNSS/INS协同工作原理
一、核心原理:动态权重与相互校验 该策略的核心思想是根据传感器数据的可靠性实时调整权重,通过加权平均输出最优融合值。二、关键技术实现 1. 四元数姿态融合(以旋转姿态为例) • 预设权重调整: GNSS状态 Lidar权重 INS权重 NARROW_INT(优) 5 5 NARROW_FLOAT(中) +1 -1 PSRDIFF(差) +2 -1 • 浮动权重计算: math 复制 w_{\text{Lidar}} = \text{残差} \times \text{参数(如3)}
2025-06-17 14:01:58
555
原创 moc 生成的类型 ID 是不是存在于已经编译好的可执行程序中
是的,moc 生成的类型 ID 最终会被编译到可执行程序中。这是 Qt 元对象系统(Meta-Object System)的核心实现机制。
2025-06-17 10:37:22
299
原创 比较深入的讲解一下 qobject_cast
Qt的qobject_cast是比dynamic_cast更高效的类型转换工具,它通过元对象系统实现O(1)时间复杂度的查表转换,速度比dynamic_cast快5-10倍。使用时要求对象必须继承QObject并包含相关宏。qobject_cast支持跨线程安全检测和动态插件接口等进阶用法,但需注意多继承限制和类型信息导出等问题。它是Qt信号槽、插件系统等核心功能的重要基础,使用时需验证源类型和目标类型的继承关系。
2025-06-17 10:27:07
301
原创 在 Qt 开发中,.toLocal8Bit().constData() 和 .toUtf8()有什么区别
Qt6 移除了 QTextCodec,默认强制使用 UTF-8,此时 toLocal8Bit() 在 Linux/macOS 下与 toUtf8() 等效,但在 Windows 下仍为本地编码。在 Qt 开发中,.toLocal8Bit().constData() 和 .toUtf8() 都是处理字符串编码转换的方法,但它们的应用场景和底层行为有本质区别。qDebug() << “UTF-8 字节:” << utf8.toHex();// 用于需要本地编码的 API,如 fopen(仅限当前系统兼容)
2025-06-16 19:49:32
401
原创 Git 本地提交撤销
移除不想要的文件 git rm --cached 错误文件.class # 添加漏掉的文件 git add 正确文件.java # 修改提交 git commit --amend这会打开编辑器让您修改提交信息,并用新的更改替换上一次提交。
2025-04-30 14:45:23
2057
原创 数字示波器
数字示波器对重复信号采用顺序采样或随机采样技术所能达到的最高带宽为示波器的数字实时带宽,数字实时带宽与最高数字化频率和波形重建技术因子K相关(数字实时带宽=最高数字化速率/K),一般并不作为一项指标直接给出。图2中的b的上升沿的中部有一采样点,则同样的波形,上升时间为数字化间隔的1.6倍。模拟示波器的上升时间与扫速无关,而数字示波器的上升时间不仅与扫速有关,还与采样点的位置有关,使用数字示波器时,我们不能象用模拟示波器那样,根据测出的时间来反推出信号的上升时间。采样速率是数字示波器的一项重要指标。
2025-04-25 16:39:53
342
原创 PFC 是什么?
那么这只电熨斗的总功率为 1100W(220V×5A= 1100W), 电熨斗工作时把这个 1100W 电功率都转换成了热量,这个热量都熨烫衣服了,也就是这 1100W 电功率都 变成了有功功率输出了,此时,有功功率和总功率都是 1100W,有功功率 1100W ÷ 总功率 1100W =1,那 么此电熨斗的功率因数就等于 1。任何电器设备工作时都要消耗电能并输出能量,例如我们的电饭锅、电熨斗、取暖的电热汀等,它们 把消耗的电能转化成为热能,这些转化为热能的电功率都等于是做功了,就称为有功功率。
2025-04-18 19:43:50
650
原创 平衡小车的卡尔曼滤波算法总结
X(k|k)= X(k|k-1)+Kg(k) (Z(k) - H X(k|k-1)) ……X(k|k)= X(k|k-1)+Kg(k) (Z(k) - H X(k|k-1)) ……X(k|k-1)为2维列向量,A为2维方阵,X(k-1|k-1)为2维列向量,B 为2维列向量,U(k) 为Gyro。Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……(2)//协方差矩阵的预测。
2025-03-31 07:45:00
389
原创 卡尔曼滤波的解释
可以看出, 因为温度计的 covariance (协方差)比较小(比较相信温度计), 所以估算出的最优温度值偏向温度计的值。度温度值的偏差, 得出的 2.35 就是进入 k+1 时刻以后 k 时刻估算出的最优温度值的偏差(对应于上面的 3)。高斯噪声的偏差是 5 度( 5 是这样得到的:如果 k-1 时刻估算出的最优温度值的偏差是 3,你对自己预测的。你相信温度是恒定的,所以你会得到 k 时刻的温度预测值是跟 k-1 时刻一样的,假设是 23 度,同时该值的。假如我们要估算 k 时刻的是实际温度值。
2025-03-30 11:59:53
275
原创 卡尔曼滤波算法及C语言实现
要估计K时刻的实际温度值,首先要根据K-1时刻的温度值预测K时刻的温度,按照之前我们讨论的,若k-1时刻的温度值是,那么预测此时的,假如该值的噪声是,5°是这样得到的,若果k-1时刻估算出的最优温度值的噪声是,预测的噪声是,所以总体的噪声为。本文通过对kalman filter algorithm的深入探讨,对kalman filter有了更深刻的认识,理解了核心的5条公式的物理意义,以及kalman filter的思想,并通过理解算法编程实践,验证了kalman filter在数据处理方面的优良性能。
2025-03-30 11:58:38
536
原创 卡尔曼滤波算法及C语言代码
卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟 k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。
2025-03-30 11:57:38
642
原创 # GPS辅助惯性导航系统技术详解
在现代导航领域,如何实现高精度的位置跟踪和姿态估计一直是一个重要课题。本文将详细介绍一种基于直接配置的GPS辅助惯性导航系统(GPS-aided INS)的实现方案,该方案通过扩展卡尔曼滤波器(EKF)实现了高频率且无漂移的导航定位功能。
2025-03-13 07:00:00
362
原创 IMU和GPS数据融合的扩展卡尔曼滤波器实现
本文介绍一个基于扩展卡尔曼滤波器(EKF)的IMU和GPS数据融合算法实现。该算法可以将IMU的高频惯性数据和GPS的低频但精确的位置数据进行融合,得到更加准确的位置估计。使用lla2enu函数将GPS的经纬度坐标转换为ENU(东北天)坐标系。IMU和GPS数据融合的扩展卡尔曼滤波器实现。通过状态转移方程更新状态向量。估计姿态、位置、速度等状态量。计算状态转移雅可比矩阵F。更新状态向量和协方差矩阵。加速度计偏置(3个)计算噪声雅可比矩阵G。计算测量雅可比矩阵H。
2025-03-10 05:45:00
625
原创 编译与链接
使用高级语言编写程序时,需要将程序的内容存储在特定的文件中,这类文件称为程序的源文件,而程序的内容称为程序的源代码。程序由源代码变成计算机可执行的二进制程序,这个过程称为程序的翻译。程序的翻译过程又包括由高级语言到汇编语言、由汇编语言到可执行程序的过程,其中由高级语言到汇编语言的过程属于编译过程,而由汇编语言到可执行程序的过程属于链接过程。高级语言经过翻译后生成的可执行程序一般称为目标程序。
2025-01-18 08:19:56
104
原创 C++实现的简单哈希表为什么比Java慢:代码或基准测试问题?
为了尽量减少Java的GC与非GC C++之间的性能差异,我们使用无限制大小的空闲列表,只在析构函数中删除:如果remove()找到匹配项,它会将节点从存储桶的链接列表移动到空闲列表的头部。我们的基准测试比较了Java中简单小型哈希表(map)的实现与C++中逐行等效的实现。Bench类还将每次添加到C++中的一个std::map或Java中采用类似设计的自定义哈希map(负载因子远低于1)中,这在计时区域外,但第一次运行需要进行一些分配,因此在为正在进行基准测试的哈希表分配节点之间会发生这种情况。
2024-12-26 22:51:22
402
原创 在 qsort 中使用 longjmp 是否合适?
然而,许多开发者在使用 qsort 时可能会遇到一些特殊情况,想要在排序过程中中断 qsort 的执行。为了避免潜在的资源泄漏、死锁或其他不一致的状态,建议避免在 qsort 中使用 longjmp,并考虑实现自己的排序算法。这表明,qsort 函数本身并不保证是可重入的,也就是说,如果在比较函数中调用了 longjmp,程序可能会面临不可预知的结果。如果你的程序确实需要在排序过程中中断操作,最安全的做法是避免使用标准库的 qsort,而是编写一个自定义的排序函数,这样可以更好地控制排序过程中的所有细节。
2024-12-25 23:16:02
421
原创 Notes on Convolutional Neural Networks
在MATLAB中实现CNN时,主要的计算瓶颈包括在前向传播中对卷积层输出图的下采样,以及在反向传播中对较高子采样层的delta进行上采样以匹配较低卷积层的输出图大小。在典型的卷积神经网络中,早期分析包括交替的卷积和子采样操作,而架构的最后阶段由通用的多层网络组成。当将最终的二维特征图作为输入传递给全连接的1维网络时,通常会将所有输出图中的特征拼接成一个长输入向量,然后应用标准的反向传播算法。卷积层的前一层特征图与可学习的核进行卷积,并通过激活函数形成输出特征图。每个输出图可能结合多个输入图的卷积。
2024-12-14 23:23:44
632
原创 反向传播算法的原理与应用
具体公式为δL-1=((wL)TδL)⊙σ’(zL-1),其中(wL)T是权重矩阵的转置,σ’(zL-1)是前一层激活函数的导数。反向传播算法是神经网络训练的核心,它通过链式法则高效地计算梯度,并通过逐层反向传播来更新网络参数。具体来说,δL=▽aC⊙σ’(zL),其中▽aC是代价函数关于输出激活值的梯度,σ’(zL)是激活函数在zL处的导数。这通常通过梯度下降算法来完成,即w→w-η▽wC,b→b-η▽bC,其中η是学习率,▽wC和▽bC分别是权重和偏置的梯度。本文将介绍反向传播算法的基本原理和应用。
2024-12-14 23:20:46
379
原创 通过四元数求机器人本体坐标旋转量
是的,通过两次姿态数据(以四元数表示)的差值,可以确定机器人在两个时刻之间的旋转角度变化。通过以上计算,你可以得到机器人在两个时刻之间的旋转角度和旋转轴。最后,从 ( q_{\Delta} ) 提取旋转轴和旋转角度。
2024-10-24 15:21:21
766
原创 【Transformer】Selective Attention Improves Transformer
无关元素在注意力机制中的存在会降低模型性能。论文提出了一种无需额外参数的简单调整方法,即选择性注意力,通过减少对无关元素的关注来提高性能。在各种模型规模和上下文长度的情况下,选择性注意力在语言建模任务上表现出显著优势。例如,使用选择性注意力的Transformer在相同验证困惑度下所需的内存和计算资源显著减少。
2024-10-11 11:54:51
396
原创 【水下目标跟踪】WebUOT-1M Advancing Deep Underwater Object Tracking with A Million-Scale Benchmark
这篇文章主要讨论了一个新提出的用于水下视觉目标跟踪 (Underwater Visual Object Tracking, UVOT) 的数据集和图像增强方法。
2024-10-09 12:09:57
463
原创 【水下目标跟踪】Improving Underwater Visual Tracking With a Large Scale Dataset and Image Enhancement
这篇文章主要讨论了一个新提出的用于水下视觉目标跟踪 (Underwater Visual Object Tracking, UVOT) 的数据集和图像增强方法。
2024-10-09 12:08:18
525
原创 为什么Visual Studio 2022中的断点在升级到.NET 8.0后未命中
最近我把一个ASP.NET Core 项目升级到了 .NET 8.0,并尝试添加一个Blazor WASM(WebAssembly)项目。按照指示将Blazor WASM项目从一个捐赠项目复制到现有的ASP.NET Core项目中。项目结构如下:ASP.NET Core项目(MyApp)托管 Blazor WASM项目(MyApp.Client)。Client项目包含用于断点调试的页面。所有功能正常,除了在Visual Studio 2022中调试Client应用程序。
2024-08-18 10:07:15
777
原创 在 Qt 中实现 GIF 动画显示
在 Qt 中实现 GIF 动画显示非常简单,只需利用QMovie和QLabel类。对于和,可以通过来嵌入QLabel,以此实现 GIF 动画在场景中的显示。此外,确保 GIF 插件的存在也是解决动画无法加载问题的关键。希望本文能帮助您在 Qt 项目中更好地实现 GIF 动画效果。如果遇到任何问题,欢迎随时交流与反馈。
2024-08-07 11:25:05
1232
原创 如何在QT中获取对象的类名
最近在编写一个测试应用程序,该应用程序用于模拟另一应用程序的按键操作。每次按键操作时,我需要确认显示的是正确的窗口或表单。因此,我获取当前显示窗口的指针并检查它的窗口标题。然而,并不是所有的窗口或表单都有窗口标题。那么,我该如何获取对象的类名呢?,这是继承类的名称而不是派生类的名称。解决这一问题的方法是确保你的派生类中包含。通过这种方式,你可以在测试应用程序中有效地确认显示的是正确的窗口或表单。在Qt中获取对象类名的最佳方法是使用。这段代码可以成功获取窗口对象的类名。宏,这样Qt才能识别派生类的名称。
2024-07-30 09:33:25
598
原创 在 Qt 中获取 MouseMove 事件
在MainWindow类中定义并实现方法。(event);通过事件过滤器可以实现应用程序窗口内的鼠标移动状态更新,而通过捕捉鼠标或定时轮询的方法可以实现更广泛的鼠标位置追踪。根据具体需求选择合适的方法,以实现最佳效果。
2024-07-24 16:09:30
929
原创 ## QString 优于 std::string 的优势
std::string 只是按字节存储数据,并不知道编码信息。例如,Qt 中的许多函数都接受 QString 作为参数,而直接使用 std::string 会导致不必要的类型转换。:虽然 std::string 可以存储 UTF-8 编码的字符串,但由于 std::string 本质上是一个字节容器,不能正确处理多字节字符(例如,std::string 的。:如果你希望代码独立于特定框架,那么使用标准库的 std::string 和 std::wstring 可能会更好。方法返回的是字节数而不是字符数)。
2024-07-19 14:43:26
614
原创 什么是 qobject_cast?
在 C++ 中,类型转换是一项常见的操作,比如将int转换为char或将QString用于。但是,为什么我们需要将一个类转换为另一个类呢?本文将解释是什么,它的作用以及为什么需要类型转换。
2024-07-04 22:16:49
883
原创 运行时类型信息(RTTI)
在C++中,RTTI可以通过运算符进行安全的类型转换,并可以通过typeid运算符和类在运行时操作类型信息。在Object Pascal中,RTTI可以通过as运算符进行安全的类型转换,使用is等类)。在Ada中,带标签的类型对象也存储类型标签,这允许在运行时识别这些对象的类型。in运算符可以在运行时测试对象是否属于特定类型并安全地转换。RTTI仅适用于多态类,即包含至少一个虚方法的类。在实践中,这并不构成限制,因为基类必须具有虚析构函数,以便从基类指针删除派生类对象时可以执行正确的清理操作。
2024-07-02 11:32:21
894
原创 Qt Creator 的设置文件保存位置
在使用 Qt Creator 进行开发时,备份或迁移设置(例如文本编辑器偏好、语法高亮等)是常见需求。了解这些设置文件在不同操作系统中的保存位置,可以简化这个过程。本文将为您详细介绍 Qt Creator 保存设置文件的位置。
2024-06-30 10:00:00
1212
原创 如何将 qmake 转换为 cmake?
在之前的项目中我使用了.pro文件来配置 qmake,但现在我希望将其转换为文件。以下是具体的步骤和转换方法。
2024-06-30 08:45:00
1734
原创 如何在 QTableView 中选择行
我是一名 QT 新手,正在使用 QTableView,如下图所示:(处于保密原因,图像内容省略)在表格的左侧,Qt 自动显示了行号,如红色标注部分所示。如何去除这些数字?另一个问题是,如果我点击任何一个单元格,只有该单元格会被选中。怎样设置才能使用户点击某个单元格时,整行都被选中,就像粉色标注部分一样?例如,当我点击单元格时,第三行应该被整个选中。
2024-06-30 08:30:00
1505
原创 四轮转向控制器与里程计数据计算的实现
类是一个集成了四轮转向控制和里程计数据计算的控制器。它管理并控制四轮转向车辆的各个部分,包括转向联动、速度控制、里程计更新等。通过本文的介绍,我们了解了如何通过 C++ 代码实现一个四轮转向控制器,并结合里程计数据提供准确的车辆位置信息反馈。这个控制器不仅能够处理车辆的基本运动控制,还能实时更新并发布里程计数据,使得车辆在复杂环境中能够获得精确的定位信息。四轮转向控制器的核心在于合理的参数初始化、精确的里程计数据计算以及实时的控制指令更新。希望本文能够对从事机器人和自动驾驶研究的工程师们有所帮助。
2024-06-29 17:30:23
640
原创 区别QPushButton和QToolButton
理解QPushButton和QToolButton之间的细微差别对于优化用户界面设计非常重要。希望这篇博客能帮助你在Qt开发中做出更好的选择。
2024-06-29 09:45:00
717
原创 Q_OBJECT 抛出 ‘undefined reference to vtable‘ 错误
遇到错误时,往往是因为 MOC 生成的文件未正确包含在项目中。通过分离头文件与源文件、适当配置.pro文件、在源文件中包含以及重新运行qmake,可以解决此问题。希望本文的方法能帮助你解决类似的编译问题。
2024-06-28 08:45:00
369
air bearing Matlab 空气静压止推轴承 ,基于matlab编写的止推轴承压力计算程序.7z
2025-06-18
一种基于中心极限定理与直方图置信区间估计和均值中值滤波器的 LidarGNSSINS 三定位数据的融合策略.7z
2025-06-17
Kolors的ComfyUI原生采样器实现(Kolors ComfyUI Native Sampler Implementation).7z
2025-06-15
基于单目视觉原理,研究目标图像的预处理、识别、定位方法与测距模型,设计实现一个目标识别与定位测距原型系统。.7z
2025-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人