1306|1

156

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【基于树莓派400的图像识别归类&运动检测&模拟信号处理系统第三帖】使用QT程序内... [复制链接]

 

【基于树莓派400的图像识别归类&运动检测&模拟信号处理系统第三帖】使用QT程序内建的QTcharts库做信号处理/分析/统计

 

       要做信号处理分析,一个显示界面是必不可少的,大多数GUI开发工具都有自己的折线图显示界面,QT也不例外,QT的折线图显示控件叫QT charts,QT charts有虚函数,属于QT内部常用的子类,需要从QWidget父类中继承升级而来,我这次就用QT charts做了两个信号显示界面,一个是使用math库构建的三角函数叠加函数,另一个则是采集自真实数据,先看看怎么显示模拟出来的信号:

void MainWindow::This_Thread_Line_Chart()
{
    static int count = 0 , count_reflash = 0;
    int ret;
    float pres;
    while(1)
    {
        if(count >= 1000000)
        {
            count = 0;
            Signal_Raw_data();
        }
        count_reflash++;
        count++;

    }
}
void MainWindow::Raw_data_CounterUpdate_Line_Chart()
{
    int i;
    static int count = 0;
    series_raw_data->clear();
    for(i = 0 ; i < N ; i ++)
    {
        //chart_raw_data_buf[i] = sin(i*0.1 + count * 0.3);
        chart_raw_data_buf[i] = sin(i*0.1 + count * 0.3) + 2 * sin(i*0.2 + count * 0.3)+ 3 * sin(i*0.3 + count * 0.3);
        series_raw_data->append(QPointF(i , chart_raw_data_buf[i]));

    }
    FFTW_Mag_Test(chart_raw_data_buf , chart_fft_data_buf , 0 , N);

    int peakFs[30] = { 0 };
    int peakFs_len = 0;
    int peakFs2[30] = { 0 };
    int peakFs2_len = 0;
    Mag_Find_Peaks(chart_fft_data_buf , N / 2 , 2 , peakFs , &peakFs_len , peakFs2 , &peakFs2_len);
    series_fft_data->clear();
    for(i = 0 ; i < N / 2 ; i ++)
    {
        series_fft_data->append(QPointF(i , chart_fft_data_buf[i]));
    }

    count++;
    if(count >= 10000)count = 0;
}

使用信号槽的方式实现该功能,信号的发出方式可以是定时器溢出,也可以是线程内部的计时器/计数器等。将结果导出,并做FFT(快速傅里叶变换),将傅里叶变换结果也显示到另一QT chart控件上,并作峰值检测和峰值统计。

173c7c0010a22b169e5cfb310877a67f

 

最新回复

正在学习电子电路设计与制作,资料有用,学习了,感谢您的分字。   详情 回复 发表于 2024-10-15 11:36
点赞(1) 关注
 
 

回复
举报

65

帖子

0

TA的资源

禁止发言

沙发
 

正在学习电子电路设计与制作,资料有用,学习了,感谢您的分字。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表