优化积分算法,3.2.2

This commit is contained in:
CHINAMI-TV221UM\Administrator 2024-08-24 11:27:03 +08:00
parent 1c85208ab9
commit 3439188cc4
3 changed files with 41 additions and 19 deletions

View File

@ -451,25 +451,37 @@ void Calculation::Integration(std::vector<float> & vecData,std::vector<float>& r
std::vector<float> realshiftfft; std::vector<float> realshiftfft;
std::vector<float> imageshiftfft; std::vector<float> imageshiftfft;
std::vector<float> realvalue,imagevalue; std::vector<float> realvalue,imagevalue,ifftData;
_FFT(vecData,realshiftfft,imageshiftfft); _FFT(vecData,realshiftfft,imageshiftfft);
for (int i = 0; i <= 5 / resolution; i++) {
realshiftfft[i] = 0; //在频域上进行5-1000 Hz的带通滤波
imageshiftfft[i] = 0; for (int i = 0; i < vecData.size() / 2 + 1; ++i) {
double frequency = i * resolution; // 计算当前频率分量
if (frequency < 5 || frequency > 1000) {
// 将5 Hz 到 1000 Hz 之外的频率成分设置为0
realshiftfft[i] = 0.0;
realshiftfft[i] = 0.0;
imageshiftfft[i] = 0.0;
imageshiftfft[i] = 0.0;
} }
for (int i = 1000 / resolution ; i < realshiftfft.size(); i++) {
realshiftfft[i] = 0;
imageshiftfft[i] = 0;
} }
for(int k = 1; k < realshiftfft.size()+1;k++){ for(int k = 1; k < realshiftfft.size()+1;k++){
realvalue.push_back((realshiftfft.at(k-1)/(k*2*M_PI))*1000 * 2);//单位转换mm/s,*1000 *2 精度损失 double frequency = k * resolution; // 计算当前频率分量
imagevalue.push_back((imageshiftfft.at(k-1)/(k*2*M_PI))*1000 * 2);//单位转换mm/s,*1000 realvalue.push_back((realshiftfft.at(k-1)/(frequency*2*M_PI))*1000 * 2);//单位转换mm/s,*1000 *2 精度损失
imagevalue.push_back((imageshiftfft.at(k-1)/(frequency*2*M_PI))*1000 * 2);//单位转换mm/s,*1000
} }
_iFFT(realvalue,imagevalue,retData); _iFFT(realvalue,imagevalue,retData);
// for (size_t i = 0; i < ifftData.size(); i++)
// {
// retData.push_back( ifftData[i] * 2);
// }
} }

View File

@ -2524,7 +2524,7 @@ std::string JsonData::JsonCmd_Cgi_55(Param_55 &param)
if(res[17]=="01"){ if(res[17]=="01"){
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate); printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate);
resolution = (((double)SampleRate/1000)*1016)/ 8192; resolution = (((double)SampleRate/1000)*1016)/ vecWave.size();
}else if(res[17]=="02"){ }else if(res[17]=="02"){
string::size_type comper = param.mChannelId.find("Z"); string::size_type comper = param.mChannelId.find("Z");

View File

@ -53,6 +53,7 @@ void CheckThread()
if (10 == heart_count) { if (10 == heart_count) {
// StatusPub(); // StatusPub();
if (GlobalConfig::LinkCount > 30) { if (GlobalConfig::LinkCount > 30) {
LOG_ERROR("MQTT connect failed\n");
#ifdef IMX6UL_GATEWAY #ifdef IMX6UL_GATEWAY
char connect[10]={0x00}; char connect[10]={0x00};
readStringValue("config", "connect",connect,(char*)GlobalConfig::Config_G.c_str()); readStringValue("config", "connect",connect,(char*)GlobalConfig::Config_G.c_str());
@ -89,7 +90,15 @@ void CheckThread()
iRet = data_publish(str.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); iRet = data_publish(str.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
if(iRet != 0 ) if(iRet != 0 )
{ {
LOG_ERROR("MQTT connect failed\n"); LOG_ERROR("MQTT connect failed ,time check\n");
#ifdef IMX6UL_GATEWAY
char connect[10]={0x00};
readStringValue("config", "connect",connect,(char*)GlobalConfig::Config_G.c_str());
if(atoi(connect)){
LOG_ERROR("MQTT connect failed,time check ,reboot\n");
exit(0);
}
#endif
//bool status = Ping( GlobalConfig::ServerIP.c_str(), 10000); //bool status = Ping( GlobalConfig::ServerIP.c_str(), 10000);
#ifdef NR5G_MODULE #ifdef NR5G_MODULE
#ifdef IMX6UL_GATEWAY #ifdef IMX6UL_GATEWAY
@ -231,12 +240,13 @@ void CheckThread()
loose_check = 0; loose_check = 0;
sql_ctl->CalculateDip(); sql_ctl->CalculateDip();
} }
if(ModifyAddr == 3600 && pUart->bModifyAddr){ if(ModifyAddr == 3600) {
LOG_INFO("ModifyAddr check\n");
ModifyAddr = 0;
if(pUart->bModifyAddr){
LOG_ERROR("ModifyAddr failed \n"); LOG_ERROR("ModifyAddr failed \n");
exit(0); exit(0);
} }
if(ModifyAddr == 21000){
ModifyAddr = 0;
} }
if(18000 == commSignal){ //5h if(18000 == commSignal){ //5h