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