news 2026/8/16 8:57:32

基于QCustomPlot实现的Nyquist图、Nichols图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于QCustomPlot实现的Nyquist图、Nichols图

目录

1.前言

2.底图预览

2.1Nyquist图

2.2Nichols图

3.附着标记点实现

4.代码附录


1.前言

Nyquist(奈奎斯特)图、Nichols(尼科尔斯)图是两种频率分析图表,与之相近的还有Bode图。由于其业务特性特性,除开X-Y轴数据以外,这两种图表有很多辅助内容需要去绘制,比如M圆/等值线、N圆/等值线等,这些内容本文统一称之为底图。

底图的内容是固定的,由纯粹的数学公式推导出,而与实际X-Y数据无关。本文基于QCustomPlotQtC++代码,绘制出了Nyquist、Nichols底图,可以方便使用作为图表背景,继而接入个人所需数据,从而快速的实现两种图表效果。

本文还附带提供了基于两种业务场景的标记点实现。

2.底图预览

2.1Nyquist图

要素内容:

(1)XY轴(实轴、虚轴)

(2)M圆(蓝色圆)

(3)N圆(粉色圆)

(4)单位圆(绿色圆)

(5)零点,(-1,0)极值点

2.2Nichols图

要素内容:

(1)M等值线、N等值线

(2)临界点

(3)周期特性。图表初始时绘制-720度至360度,三个周期的Nichols底图,该范围外的底图只有在可视时,才会被创建

3.附着标记点实现

QCPCurve:QCustomPlot中的一个曲线类,通过输入一系列的散点(实际点),在界面上拟合、显示出一条曲线。

实现了两个标记点两个业务需求:

(1)对于图表上的任意一条QCPCurve曲线,仅存在一个凸显的标记点。该标记点对应曲线上实际点位置;该标记点可以被鼠标拖动至不同位置。

(2)对于图表上的任意一条QCPCurve曲线,可以存在多个凸显的标记点。该标记点通过alt+left mouse添加、删除;该标记点对应曲线上实际点位置;该标记点可以被鼠标拖动至不同位置。

4.代码附录

代码压缩包见文章开头,有三类文件:

(1)nyquist_chart.h/cpp:nyquist底图的实现代码。

(2)nichols_chart.h/cpp:nichols底图实现代码。

(3)curve_data_marker.h/cpp:标记点实现代码。

备注:以上代码需要引入QCustomPlot开源库,需自行下载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 8:56:05

胡闹厨房2联机延迟高到瞬移?用虚拟局域网工具建条稳定通道

周末晚上和朋友约好一起胡闹厨房2,你开了房间选了关卡,朋友连进来之后操作勉强能跟上。但等到烤牛排煮汤、盘子堆成山的时候,朋友那边开始瞬移,切好的菜下一秒又回到砧板上,端着的汤突然出现在地上,整个厨房…

作者头像 李华
网站建设 2026/8/16 8:53:47

蓝湖与MasterGo一体化工作流:从设计到开发的高效协同实践

1. 项目概述:从“工具”到“工作流”的认知升级 最近和几个不同规模团队的设计师、产品经理聊天,发现一个挺有意思的现象:大家提起“蓝湖”和“MasterGo”,第一反应往往是“哦,那个切图标注工具”和“那个在线设计工具…

作者头像 李华
网站建设 2026/8/16 8:53:16

ClickHouse 小 Part 堆积复盘:从写入批次和 Merge 队列找证据

ClickHouse 小 Part 堆积复盘:从写入批次和 Merge 队列找证据 ClickHouse 小 Part 堆积通常是写入粒度、Merge 资源和查询压力共同作用。复盘先按表、分区和时间查看系统表,不用一个 Parts 数量直接给参数定罪。 先看 Parts 的增长方式 按表和分区查看 s…

作者头像 李华
网站建设 2026/8/16 8:52:08

AI回答为什么总引用知乎和CSDN,而不是企业官网?——基于豆包、DeepSeek等平台1000次真实提问的信源分布统计

引言:一个让市场团队困惑的现象很多企业市场团队发现,向豆包、DeepSeek、文心一言等AI提问时,回答里引用的内容经常来自知乎、CSDN、博客园,而不是企业自己的官网。哪怕官网内容更新、更权威,AI似乎仍然偏爱第三方平台…

作者头像 李华
网站建设 2026/8/16 8:50:55

MySQL 联合索引失效:检查类型转换与最左前缀

MySQL 联合索引失效:检查类型转换与最左前缀 联合索引看似命中却依旧慢时,先检查列类型、隐式转换和最左前缀。EXPLAIN 只描述优化器计划,还要结合实际扫描行数与慢日志判断。 1. 查询变慢时,先核对执行计划与索引条件 排查时可先…

作者头像 李华
网站建设 2026/8/16 8:49:53

睿思BI开源版从部署到实战:避坑指南与性能调优全解析

1. 项目概述:为什么选择睿思BI开源版? 最近在数据圈子里,睿思BI开源版的热度有点高。不少朋友在群里问,这个号称“开箱即用”的BI工具到底怎么样,能不能快速上手,值不值得投入团队时间。作为一个在数据分析…

作者头像 李华