【基于树莓派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) + 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控件上,并作峰值检测和峰值统计。
鎾斁鍣ㄥ姞杞藉け璐�: 鏈娴嬪埌Flash Player锛岃鍒� 瀹夎
173c7c0010a22b169e5cfb310877a67f
|