优化频域计算方法,取完整原始数据计算
This commit is contained in:
parent
8fa77c8f91
commit
8fc887fc58
@ -368,7 +368,6 @@ void Calculation::FFTSpec(std::vector<float> & vecData, std::vector<float> & vec
|
||||
fftw_complex *inFFt, *outFFt;
|
||||
inFFt = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * vecData.size());
|
||||
outFFt = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * vecData.size());
|
||||
printf("1---------------------------------------------->%d\n",vecData.size());
|
||||
|
||||
for (int j = 0; j < vecData.size(); j++) {
|
||||
inFFt[j][0] = (double)vecData[j];
|
||||
@ -455,7 +454,7 @@ void Calculation::Integration(std::vector<float> & vecData,std::vector<float>& r
|
||||
std::vector<float> realvalue,imagevalue;
|
||||
_FFT(vecData,realshiftfft,imageshiftfft);
|
||||
|
||||
for (int i = 0; i < 5 / resolution; i++) {
|
||||
for (int i = 0; i <= 5 / resolution; i++) {
|
||||
realshiftfft[i] = 0;
|
||||
imageshiftfft[i] = 0;
|
||||
}
|
||||
|
@ -1745,31 +1745,33 @@ std::string JsonData::JsonCmd_Cgi_30(Param_30 ¶m)
|
||||
}else{
|
||||
while(inFile.read((char *)&fTemp,sizeof(fTemp)))
|
||||
{ // 取8K进行计算
|
||||
if(i < 8192)
|
||||
//if(i < 8192)
|
||||
{
|
||||
vecWave.push_back(fTemp);
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
// else{
|
||||
// break;
|
||||
// }
|
||||
// i++;
|
||||
}
|
||||
//测试正弦波
|
||||
//pCalculation->GenerateSin(vecWave);
|
||||
|
||||
if(vecWave.size() < 8192){
|
||||
for(int i = vecWave.size(); i < 8192;i++){
|
||||
vecWave.push_back(0);
|
||||
}
|
||||
}
|
||||
// if(vecWave.size() < 8192){
|
||||
// for(int i = vecWave.size(); i < 8192;i++){
|
||||
// vecWave.push_back(0);
|
||||
// }
|
||||
// }
|
||||
//添加汉宁窗
|
||||
pCalculation->Hanning(vecWave, hanningWave);
|
||||
for(int i = 0; i < vecWave.size();i++){
|
||||
addhanningWave.push_back(vecWave[i]*hanningWave[i]);
|
||||
}
|
||||
// pCalculation->Hanning(vecWave, hanningWave);
|
||||
// for(int i = 0; i < vecWave.size();i++){
|
||||
// addhanningWave.push_back(vecWave[i]*hanningWave[i]);
|
||||
// }
|
||||
|
||||
//进行傅立叶变换
|
||||
pCalculation->FFTSpec(addhanningWave, fftWave);
|
||||
pCalculation->FFTSpec(vecWave, fftWave);
|
||||
sampleRateReference = 1024;
|
||||
|
||||
}
|
||||
/*for(int i = 0; i < fftWave.size();i++){
|
||||
fftWave[i] = fftWave[i]*2;
|
||||
@ -1830,7 +1832,8 @@ std::string JsonData::JsonCmd_Cgi_30(Param_30 ¶m)
|
||||
if(res[17]=="01"){
|
||||
SampleRate = atoi(res[23].c_str());
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate);
|
||||
resolution = (((double)SampleRate/1000)*1024)/ 8192;
|
||||
resolution = (((double)SampleRate/1000)*1016)/ vecWave.size();
|
||||
//resolution = (double)SampleRate/vecWave.size();
|
||||
|
||||
}else if(res[17]=="02"){
|
||||
string::size_type comper = param.mChannelId.find("Z");
|
||||
@ -1840,9 +1843,15 @@ std::string JsonData::JsonCmd_Cgi_30(Param_30 ¶m)
|
||||
//resolution = (((double)vecWave.size()/1000)*1024)/ (SampleRate * ((vecWave.size()/SampleRate)));
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d,resolution = %f\n",SampleRate,resolution);
|
||||
}else{
|
||||
SampleRate = 8000;
|
||||
SampleRate = 8192;
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate);
|
||||
resolution = (((double)SampleRate/1024)*1024)/ 8192;
|
||||
if (vecWave.size() < 8192)
|
||||
{
|
||||
resolution = (double)SampleRate/ vecWave.size();
|
||||
}else{
|
||||
|
||||
resolution = (double)SampleRate/ 8192;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2005,7 +2014,7 @@ std::string JsonData::JsonCmd_Cgi_40(Param_40 ¶m)
|
||||
if(res[17]=="01"){
|
||||
SampleRate = atoi(res[23].c_str());
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate);
|
||||
resolution = (((double)SampleRate/1000)*1024)/ 8192;
|
||||
resolution = (((double)SampleRate/1000)*1016)/ 8192;
|
||||
}else if(res[17]=="02"){
|
||||
string::size_type comper = param.mChannelId.find("Z");
|
||||
if (comper != string::npos) {
|
||||
@ -2515,7 +2524,7 @@ std::string JsonData::JsonCmd_Cgi_55(Param_55 ¶m)
|
||||
if(res[17]=="01"){
|
||||
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate);
|
||||
resolution = (((double)SampleRate/1000)*1024)/ 8192;
|
||||
resolution = (((double)SampleRate/1000)*1016)/ 8192;
|
||||
|
||||
}else if(res[17]=="02"){
|
||||
string::size_type comper = param.mChannelId.find("Z");
|
||||
@ -2656,36 +2665,47 @@ std::string JsonData::JsonCmd_Cgi_56(Param_56 ¶m)
|
||||
}else{
|
||||
while(inFile.read((char *)&fTemp,sizeof(fTemp)))
|
||||
{ // 取8K进行计算
|
||||
if(i < 8192)
|
||||
//if(i < 8192)
|
||||
{
|
||||
vecWave.push_back(fTemp);
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
// else{
|
||||
// break;
|
||||
// }
|
||||
// i++;
|
||||
}
|
||||
if(res[17]=="01"){
|
||||
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate);
|
||||
resolution = (((double)SampleRate/1000)*1024)/ 8192;
|
||||
resolution = (((double)SampleRate/1000)*1016)/ vecWave.size();
|
||||
//resolution = (double)SampleRate/vecWave.size();
|
||||
|
||||
}else if(res[17]=="02"){
|
||||
string::size_type comper = param.mChannelId.find("Z");
|
||||
{
|
||||
SampleRate = 8000;
|
||||
if (comper != string::npos) {
|
||||
SampleRate = atoi(res[23].c_str());
|
||||
resolution = (double)SampleRate/vecWave.size();
|
||||
//resolution = (((double)vecWave.size()/1000)*1024)/ (SampleRate * ((vecWave.size()/SampleRate)));
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d,resolution = %f\n",SampleRate,resolution);
|
||||
}else{
|
||||
SampleRate = 8192;
|
||||
printf("@@@@@@@@@@@@@@@@@@@@sample_rate=%d\n",SampleRate);
|
||||
resolution = (((double)SampleRate/1024)*1024)/ 8192;
|
||||
if (vecWave.size() < 8192)
|
||||
{
|
||||
resolution = (double)SampleRate/ vecWave.size();
|
||||
}else{
|
||||
resolution = (double)SampleRate/ 8192;
|
||||
}
|
||||
}
|
||||
}
|
||||
//测试正弦波
|
||||
//pCalculation->GenerateSin(vecWave);
|
||||
|
||||
if(vecWave.size() < 8192){
|
||||
for(int i = vecWave.size(); i < 8192;i++){
|
||||
vecWave.push_back(0);
|
||||
}
|
||||
}
|
||||
// if(vecWave.size() < 8192){
|
||||
// for(int i = vecWave.size(); i < 8192;i++){
|
||||
// vecWave.push_back(0);
|
||||
// }
|
||||
// }
|
||||
// //添加汉宁窗
|
||||
// pCalculation->Hanning(vecWave, hanningWave);
|
||||
// for(int i = 0; i < vecWave.size();i++){
|
||||
@ -2695,6 +2715,7 @@ std::string JsonData::JsonCmd_Cgi_56(Param_56 ¶m)
|
||||
// //积分
|
||||
pCalculation->Integration(vecWave, IntegrationWave,resolution);
|
||||
pCalculation->FFTSpec(IntegrationWave, fftWave);
|
||||
|
||||
sampleRateReference = 1024;
|
||||
}
|
||||
/*for(int i = 0; i < fftWave.size();i++){
|
||||
|
Loading…
x
Reference in New Issue
Block a user