for(int i = 0; i < configdata.m_Sounddata.m_chartYdata.size(); i++) { float showYvalue = (double)(configdata.m_Sounddata.m_chartYdata[i].m_GateInf.nAAmp) / dAllDataMaxWave; float fStep = configdata.m_Sounddata.m_chartYdata[i].fScanPos[configdata.m_Task.nStepType] - configdata.m_Sounddata.m_ScanMaxDataPos[configdata.m_Task.nStepType]; if(configdata.m_Sounddata.nScanPlaneType == 1 || configdata.m_Sounddata.nTypeScanFind == 3)//轴线 { fStep = configdata.m_Sounddata.m_MaxDataPos[configdata.m_Task.nStepType] - configdata.m_Sounddata.m_chartYdata[i].fScanPos[configdata.m_Task.nStepType] + configdata.m_Sounddata.m_dInitDis; if(showYvalue > fMaxYValue) { if(!bFindEnd) { if(!bFindStart) { fStartMax = fStep;//第一次Y大于0.5 记录X bFindStart = true; } if(showYvalue > fMaxYValue) //Y>0.5 上升 { fMaxYValue = showYvalue; posSum = 0; posCount = 0; posSum += fStep; posCount++; if(showYvalue > 0.8) { bFindFocal = true; } } else if(showYvalue == fMaxYValue) { posSum += fStep; posCount++; } } } else { if(bFindFocal) { if(!bFindEnd) //第一次前一个y大于0.8 第二个小于0.5 { fEndMin = fStep; //记录X坐标 bFindEnd = true; } } } if(!bFindFocal) { fEndMin = fStep; //有一次y>0.5 这里不进 } } else { if(fMaxYValue < showYvalue) { fMaxYValue = showYvalue; nMaxYIndex = i; } } pointStep.append(QPointF(fStep, showYvalue)); }给这些数据做平滑处理
时间: 2024-02-10 08:24:35 浏览: 104
ica.rar_ica C_ica 声音_matlab wav_wav matlab_wav matlab
你可以使用滑动平均或指数平滑的方法对这些数据进行平滑处理。
1. 滑动平均法:
首先定义一个窗口大小(如n),然后从第n个数据开始,每次计算窗口内数据的平均值,并将平均值作为该窗口内的所有数据的新值。
示例代码如下:
```cpp
int n = 3; // 窗口大小
QVector<float> smoothedData;
for (int i = n; i < pointStep.size(); i++) {
float sum = 0;
for (int j = i - n; j <= i; j++) {
sum += pointStep[j].y();
}
float average = sum / (n + 1);
smoothedData.append(average);
}
```
2. 指数平滑法:
指数平滑法通过给每个数据赋予一个权重来进行平滑处理。较新的数据具有较高的权重,较旧的数据具有较低的权重。
示例代码如下:
```cpp
float alpha = 0.2; // 权重系数
QVector<float> smoothedData;
smoothedData.append(pointStep[0].y()); // 将第一个数据作为初始值
for (int i = 1; i < pointStep.size(); i++) {
float smoothedValue = alpha * pointStep[i].y() + (1 - alpha) * smoothedData[i-1];
smoothedData.append(smoothedValue);
}
```
你可以根据实际情况选择合适的平滑方法和参数。
阅读全文