logplus/app/fdsa4_test/CBUIprogram.cpp

1607 lines
41 KiB
C++
Raw Normal View History

2026-05-10 22:27:18 +08:00
#include "MemRdWt.h"
#include "math.h"
#include "BaseFun.h"
#include <stdio.h>
#include "DepthProgress.h"
#include <iostream>
#include <fstream>
#include<time.h>
//#include <Windows.h>
#include <QFileDialog>
#include <QTextStream>
#include <math.h>
#include"fftw3.h"
#include"Att_c_find.h"
#include"hilbert.h"
#include"Inputtuban.h"
//#include"maxInArray.h"
#include"SLG_plate.h"
#include"Zc_Zm_comb.h"
#include"S_per.h"
#include"Ecc_Co.h"
#include"FindPeak.h"
#include"InArray_self.h"
#include"Rate_Co.h"
#include"Thcav_Co.h"
#include"findcc.h"
#ifdef BOOL
#undef BOOL
#endif
#include <Windows.h>
using namespace std;
#define PI (float)3.1415926
#define NN 300
#define NFFT 80
//FILE* fpF,*fpF1,*fpN1,*fpN,*fpR,*fpR1,*fp11,*fp12,*fp13,*fpSPR;
//FILE* fpJc;
//FILE* fpR1,*fpR2,*fpR3,*fpR4,*fpR5,*fpR6,*fpR7;
//------------------------<2D><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>----------------------------------------------
Slf_WAVE mWave[1];
using namespace std;
#define OUTNAME "OUT1"
extern "C"{
//------------------------------------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>----------------------------------------------------------------------------------
_declspec (dllexport) struct INC_STRU INC={12,
"FWGN:Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,raw;; \
FWST:Զ<EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>,<EFBFBD><EFBFBD>s;;\
NWGN:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,raw;;\
NWST:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>,<EFBFBD><EFBFBD>s;; \
RWGN:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,raw;;\
RWST:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>,<EFBFBD><EFBFBD>s;; \
MWAVE:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>s;; \
MWGN:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,raw;; \
MWST:<EFBFBD><EFBFBD>ӳ<EFBFBD>,<EFBFBD><EFBFBD>s;; \
W80F:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>;; \
RB:<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(<EFBFBD><EFBFBD>);; \
RPS:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,r/s;;"};
_declspec (dllexport) struct INP_STRU INP;
//_declspec (dllexport) struct OUTC_STRU OUTC={18, "ATT:˥<><CBA5>;;\
RATE:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>;;\
ATTC:<EFBFBD>׺<EFBFBD>˥<EFBFBD><EFBFBD>;;\
ZCC:<EFBFBD>׺<EFBFBD><EFBFBD>;;\
SLG:<EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD>״̬;;\
THC:<EFBFBD>׹ܺ<EFBFBD><EFBFBD><EFBFBD>;;\
AMP:<EFBFBD>׹<EFBFBD><EFBFBD>ڱڴֲڶ<EFBFBD>;;\
SPR_ALL:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>;;\
LPR_ALL:Һ<EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>;;\
GPR_ALL:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>;;\
THCAV:<EFBFBD>׹<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;\
THCMN:<EFBFBD>׹<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;\
THCMX:<EFBFBD>׹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;\
ECM:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>;;\
CEM:<EFBFBD>׹ܾ<EFBFBD><EFBFBD>ж<EFBFBD>;;\
THerr:<EFBFBD>׹ܺ<EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;\
THLR:<EFBFBD>׹<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>;;\
THCSD:<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;"};
//
////8, "ATT:36<33><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><CBA5>ֵ;dB/m; RATE:72<37><32><EFBFBD><EFBFBD><EFBFBD>εĹ<CEB5><C4B9><EFBFBD>Ч<EFBFBD><D0A7>ֵ;%; ATTC:<3A>׺<EFBFBD>˥<EFBFBD><CBA5><EFBFBD><EFBFBD>;none; ZCC:<3A>׺<EFBFBD><D7BA>迹;MRayI; SLG:<3A>׺<EFBFBD><D7BA><EFBFBD>Һ<EFBFBD><D2BA>״̬;none; THC:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׹ܺ<D7B9><DCBA><EFBFBD>;mm;AMP:<3A>׹<EFBFBD><D7B9>ڲ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>;none;SLGall:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;none;"
//_declspec (dllexport) struct OUTP_STRU OUTP;
_declspec (dllexport) struct HD_STRU HD={0.0,9999.0,0.0,0.0,0.0,0.0,0.0,"CBUIprogram.INP","CBUIprogram.TLP"};
__declspec (dllexport) struct CONC_STRU CONC={32,
"CTH:<3A>׹ܺ<D7B9><DCBA><EFBFBD>,mm;;;;10.54;\
CT:ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;;;1;\
IT:<EFBFBD>׹ܳߴ<EFBFBD>,mm;;;;139.7;\
MT:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;;;1;\
STEV:<EFBFBD>׹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,m/s;;;;5200;\
ZM1:<EFBFBD><EFBFBD>,MRayls;;;;1.5;\
LSM:ƽ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>;;;;2;\
BW:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>;;;;0.08;\
CON1:˥<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>,dB/m;;;;-35;\
CON2:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>;;;;0.01;\
CON3:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;;;;0.55;\
RWD:<EFBFBD><EFBFBD><EFBFBD>񲨿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<EFBFBD><EFBFBD>s;;;;20;\
RWL:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>s;;;;30;\
FPS:<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>;;;;20;\
FPE:<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>;;;;300;\
RM1:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>,kHz;;;;20;\
RM2:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,kHz;;;;40;\
RL:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>򴰳<EFBFBD>,<EFBFBD><EFBFBD>s;;;;48;\
S1:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֹ,%;;;;10;\
S2:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>ֵֹ,%;;;;70;\
S3:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ֵֹ,%;;;;90;\
L1:Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ֵֹ,%;;;;10;\
L2:Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>ֵֹ,%;;;;20;\
L3:Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֹ,%;;;;90;\
G1:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֹ,%;;;;90;\
CCMX:<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޽<EFBFBD>ֵֹ,m;;;;2;\
CCMN:<EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޽<EFBFBD>ֵֹ,m;;;;1;\
NSR:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>s;;;;400;\
FSR:Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>s;;;;400;\
RSR:<EFBFBD><EFBFBD><EFBFBD>񲨲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>s;;;;400;\
CID:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,mm;;;;29.5;\
CD:<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,mm;;;;27.2;"
};
_declspec (dllexport) struct CON_STRU CON={10.54,1,139.7,1,5200,1.5,2,0.08,-35,0.01,0.55,20,30,20,300,20,40,48,10,70,90,10,20,90,90,2,1,400,400,400,29.5,27.2};
_declspec (dllexport) struct ErrorInf errorinf;
__declspec (dllexport) struct LogType LogType={};//WAVE_OBJECT,WAVE_OBJECT,WAVE_OBJECT,WAVE_OBJECT,WAVE_OBJECT,WAVE_OBJECT
__declspec( dllexport ) CMemRdWt MemRdWt;
_declspec (dllexport) int CBUIprogram();
}
typedef struct ss_struct
{
int GNO;
float GSDEP,GEDEP;
int GRESULT;
} GUJING;
struct Fdpr {
float fdep;
float fspr;
// float flpr;
float fgpr;
};
int getRange(float y,float S1,float S2,float S3)
{
if (y >= 0 && y < S1) return 0;
if (y >= S1 && y < S2) return 1;
if (y >= S2 && y < S3) return 2;
if (y >= S3 && y <= 100) return 3;
return -1;
}
struct Process_Struct
{
//------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>-------------------------------------
//float ATT, RATE,ATTC,ZCC,SLG,THC,AMP,SPR_ALL,LPR_ALL, GPR_ALL,THCAV,THCMN,THCMX,ECM, CEM, THerr, THLR,THCSD;
float CTH,CT,IT,MT,STEV,ZM1,LSM,BW,CON1,CON2,CON3,RWD,RWL,FPS,FPE,RM1,RM2,RL,S1,S2,S3,L1,L2,L3,G1,CCMX,CCMN,NSR,FSR,RSR,CID,CD;
int Process();
};
int CBUIprogram()
{
//-------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>----------------------------------------
Process_Struct Process;
return Process.Process();
}
int Process_Struct::Process()
{
if(HD.Sdep >= HD.EndDep)
{
AfxMessageBox("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return 0;
}
//-------------------------------------<2D><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>----------------------------------------
MemRdWt.Const();
MemRdWt.In();
MemRdWt.Out();
//char name[100];
//MemRdWt.GetInCurveName(0,name);
Slf_WAVE waveinf;
//-----------------------------------------2 <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ģ<DEB8>-----------------------------------------------
#pragma region <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
//float NSR[36], FSR[36], RSR[72];
GetPosValue(CTH,CON,1,1);
GetPosValue(CT,CON,2,1);
GetPosValue(IT,CON,3,1);
GetPosValue(MT,CON,4,1);
GetPosValue(STEV,CON,5,1);
GetPosValue(ZM1,CON,6,1);
GetPosValue(LSM,CON,7,1);
GetPosValue(BW,CON,8,1);
GetPosValue(CON1,CON,9,1);
GetPosValue(CON2,CON,10,1);
GetPosValue(CON3,CON,11,1);
GetPosValue(RWD,CON,12,1);
GetPosValue(RWL,CON,13,1);
GetPosValue(FPS,CON,14,1);
GetPosValue(FPE,CON,15,1);
GetPosValue(RM1,CON,16,1);
GetPosValue(RM2,CON,17,1);
GetPosValue(RL,CON,18,1);
GetPosValue(S1,CON,19,1);
GetPosValue(S2,CON,20,1);
GetPosValue(S3,CON,21,1);
GetPosValue(L1,CON,22,1);
GetPosValue(L2,CON,23,1);
GetPosValue(L3,CON,24,1);
GetPosValue(G1,CON,25,1);
GetPosValue(CCMX,CON,26,1);
GetPosValue(CCMN,CON,27,1);
GetPosValue(NSR,CON,28,1);
GetPosValue(FSR,CON,29,1);
GetPosValue(RSR,CON,30,1);
GetPosValue(CID,CON,31,1);
GetPosValue(CD,CON,32,1);
#pragma endregion
IT=IT/25.4;
float gd_Zc[100], gd_Att[100], ld_Zc[100], ld_Att[100], sd_Zc[100], sd_Att[100], gu_Zc[100], gu_Att[100], lu_Zc[100], lu_Att[100], su_Zc[100], su_Att[100];
Tubanpara(MT, CTH, gd_Zc, gd_Att, ld_Zc, ld_Att, sd_Zc, sd_Att, gu_Zc, gu_Att, lu_Zc, lu_Att, su_Zc, su_Att);
#pragma region F2D<32><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float **F2D = new float*[36];
for(int _ii = 0; _ii < 36; _ii++)
F2D[_ii] = new float[NN];
float **N2D = new float*[36];
for(int _ii = 0; _ii < 36; _ii++)
N2D[_ii] = new float[NN];
float **R2D = new float*[72];
for(int _ii = 0; _ii < 72; _ii++)
R2D[_ii] = new float[NN];
#pragma endregion
#pragma region F_hx_abs<62><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float **F_hx_abs = new float*[36];
for(int _ii = 0; _ii < 36; _ii++)
F_hx_abs[_ii] = new float[NN];
float **N_hx_abs = new float*[36];
for(int _ii = 0; _ii < 36; _ii++)
N_hx_abs[_ii] = new float[NN];
float **R_hx_abs = new float*[72];
for(int _ii = 0; _ii < 72; _ii++)
R_hx_abs[_ii] = new float[NN*2];
float **R_hx_group = new float*[72];
for (int _ii = 0; _ii < 72; _ii++)
R_hx_group[_ii] = new float[NN * 2];
//#pragma region RR2D/XX_abs/pha/p
float **RR2D = new float*[72];
for(int _ii = 0; _ii < 72; _ii++)
RR2D[_ii] = new float[NN*2];
float **R_XX_abs = new float*[72];
for(int _ii = 0; _ii < 72; _ii++)
R_XX_abs[_ii] = new float[NN*2];
float **F_lb = new float*[36];
for (int _ii = 0; _ii < 36; _ii++)
F_lb[_ii] = new float[NN];
#pragma endregion
#pragma region <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QStringList _nList;
_nList << "ATT" << "RATE" << "ATTC" << "ZCC" << "SLG" << "THC"<<"AMP";
for(int _i = 0; _i < _nList.size(); _i++)
{
int index1 = MemRdWt.OpenWave(_nList[_i].toStdString().c_str());
if(index1 > 0)
continue;
Slf_WAVE myWave;
strcpy(myWave.Name, _nList[_i].toStdString().c_str());
strcpy(myWave.AliasName, _nList[_i].toStdString().c_str());
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
myWave.StartTime=0;
myWave.TimeLevel=5;
myWave.ArrayNum = 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(_nList[_i] == "ATT")
{myWave.TimeSamples = 36;
myWave.TimeLevel=10;}
else if(_nList[_i] == "SLGall")
myWave.TimeSamples = 1;
else
myWave.TimeSamples = 72;
strcpy(myWave.TimeUnit,"ns");
index1 = MemRdWt.OpenWave((Slf_WAVE *)&myWave);
}
#pragma endregion
#pragma region <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//MemRdWt.OpenCurve("SPR_all");
int index1 = MemRdWt.OpenCurve("SPR_all");
if(index1 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "SPR_all");
strcpy(myWave.AliasName, "SPR_all");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index1 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
//
int index2 = MemRdWt.OpenCurve("LPR_all");
if(index2 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "LPR_all");
strcpy(myWave.AliasName, "LPR_all");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index2 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
//
int index3 = MemRdWt.OpenCurve("GPR_all");
if(index3 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "GPR_all");
strcpy(myWave.AliasName, "GPR_all");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index3 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index4 = MemRdWt.OpenCurve("THCAV");
if(index4 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "THCAV");
strcpy(myWave.AliasName, "THCAV");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index4 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index5 = MemRdWt.OpenCurve("THerr");
if(index5 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "THerr");
strcpy(myWave.AliasName, "THerr");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index5 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index6 = MemRdWt.OpenCurve("THCMN");
if(index6 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "THCMN");
strcpy(myWave.AliasName, "THCMN");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index6 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index7 = MemRdWt.OpenCurve("THCMX");
if(index7 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "THCMX");
strcpy(myWave.AliasName, "THCMX");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index7 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index8 = MemRdWt.OpenCurve("THLR");
if(index8 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "THLR");
strcpy(myWave.AliasName, "THLR");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index8 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index9 = MemRdWt.OpenCurve("ECM");
if(index9 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "ECM");
strcpy(myWave.AliasName, "ECM");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index9 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index10 = MemRdWt.OpenCurve("CEM");
if(index10 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "CEM");
strcpy(myWave.AliasName, "CEM");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index10 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
int index11 = MemRdWt.OpenCurve("THCSD");
if(index11 < 0)
{
Slf_CURVE myWave;
strcpy(myWave.Name, "THCSD");
strcpy(myWave.AliasName, "THCSD");
strcpy(myWave.DepthUnit, "m");
myWave.CodeLen = 4;//float
myWave.RepCode = 4;
myWave.DefVal = 0;
myWave.StartDepth = HD.Sdep;
myWave.EndDepth = HD.Edep;
myWave.DepLevel = HD.Rlev;
strcpy(myWave.DepthUnit,"m");
index11 = MemRdWt.OpenCurve((Slf_CURVE *)&myWave);
}
#pragma endregion
int SL=(HD.EndDep-HD.Sdep)/HD.Rlev+5;
float SPR_all;
float LPR_all;
float GPR_all;
float THCAV[1];
float THerr,THCMX,THCMN,THLR,ECM,CEM,THCSD;
#pragma region <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>index<65><78>ȡ
int ATT_index = MemRdWt.OpenWave("ATT");
int RATE_index = MemRdWt.OpenWave("RATE");
int ATTC_index = MemRdWt.OpenWave("ATTC");
int ZCC_index = MemRdWt.OpenWave("ZCC");
int SLG_index = MemRdWt.OpenWave("SLG");
int THC_index = MemRdWt.OpenWave("THC");
//<2F><><EFBFBD><EFBFBD><EFBFBD>׹<EFBFBD><D7B9>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int AMP_index = MemRdWt.OpenWave("AMP");
//<2F><><EFBFBD><EFBFBD>
int SPR_all_index = MemRdWt.OpenCurve("SPR_all");
int LPR_all_index = MemRdWt.OpenCurve("LPR_all");
int GPR_all_index = MemRdWt.OpenCurve("GPR_all");
int THCAV_index = MemRdWt.OpenCurve("THCAV");
int THerr_index = MemRdWt.OpenCurve("THerr");
int THCMN_index = MemRdWt.OpenCurve("THCMN");
int THCMX_index = MemRdWt.OpenCurve("THCMX");
int THLR_index = MemRdWt.OpenCurve("THLR");
int ECM_index = MemRdWt.OpenCurve("ECM");
int CEM_index = MemRdWt.OpenCurve("CEM");
int THCSD_index = MemRdWt.OpenCurve("THCSD");
#pragma endregion
#pragma region <20><>ȡinput<75><74><EFBFBD>ݵ<EFBFBD>index
int FGN_index = MemRdWt.OpenWave("FWGN");
int NGN_index = MemRdWt.OpenWave("NWGN");
int RGN_index = MemRdWt.OpenWave("RWGN");
int FDL_index = MemRdWt.OpenWave("FWST");
int NDL_index = MemRdWt.OpenWave("NWST");
int RDL_index = MemRdWt.OpenWave("RWST");
int FWAVEindex[36], NWAVEindex[36], RWAVEindex[72];
for(int _i = 0; _i < 36; _i++)
{
QString num = QString::number(_i + 1);
num = (num.length() == 1)? "0" + num : num;
QString fwaveName = "FWAVE" + num;
QString nwaveName = "NWAVE" + num;
FWAVEindex[_i] = MemRdWt.OpenWave(fwaveName.toStdString().c_str());
NWAVEindex[_i] = MemRdWt.OpenWave(nwaveName.toStdString().c_str());
if(FWAVEindex[_i] < 0 || NWAVEindex[_i] < 0)
return 0;
}
for(int _i = 0; _i < 72; _i++)
{
QString num = QString::number(_i + 1);
num = (num.length() == 1)? "0" + num : num;
QString rwaveName = "RWAVE" + num;
RWAVEindex[_i] = MemRdWt.OpenWave(rwaveName.toStdString().c_str());
if(RWAVEindex[_i] < 0)
return 0;
}
#pragma endregion
int itable1=MemRdWt.OpenOG_RESULT("<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");//<2F>򿪹̾<F2BFAAB9><CCBE><EFBFBD><EFBFBD>񣬻<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>index<65><78>Կ<EFBFBD>ף<EFBFBD>
MemRdWt.SetTableRecordCount(itable1,0); //<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD>еı<D0B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int itable2=MemRdWt.OpenOG_RESULT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
MemRdWt.SetTableRecordCount(itable2,0);
int fiii=0;
int FLE=(HD.EndDep-HD.Stdep)/HD.Rlev+300;
float *FSPR=new float[FLE];
float *FGPR=new float[FLE];
float *FDEP=new float[FLE];
/*float **FSLG = new float*[72];
for (int _ii = 0; _ii < 72; _ii++)
FSLG[_ii] = new float[FLE];*/
/*int **ADDR=new int*[72];
for(int mm=0;mm<72;mm++)
ADDR[mm]=new int[FLE];*/
DepthProgress mmProgress;
mmProgress.CreatProgress(HD.Stdep, HD.EndDep, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
//---------------------------------<2D><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>--------------------------------------------
while(HD.Dep <= HD.EndDep)
{
//ÿ<>ζ<EFBFBD><CEB6>ظ<EFBFBD><D8B8><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Զ<EFBFBD><D4B6>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GetPosValue(CTH,CON,1,1);
GetPosValue(CT,CON,2,1);
GetPosValue(IT,CON,3,1);
GetPosValue(MT,CON,4,1);
GetPosValue(STEV,CON,5,1);
GetPosValue(ZM1,CON,6,1);
GetPosValue(LSM,CON,7,1);
GetPosValue(BW,CON,8,1);
GetPosValue(CON1,CON,9,1);
GetPosValue(CON2,CON,10,1);
GetPosValue(CON3,CON,11,1);
GetPosValue(RWD,CON,12,1);
GetPosValue(RWL,CON,13,1);
GetPosValue(FPS,CON,14,1);
GetPosValue(FPE,CON,15,1);
GetPosValue(RM1,CON,16,1);
GetPosValue(RM2,CON,17,1);
GetPosValue(RL,CON,18,1);
GetPosValue(S1,CON,19,1);
GetPosValue(S2,CON,20,1);
GetPosValue(S3,CON,21,1);
GetPosValue(L1,CON,22,1);
GetPosValue(L2,CON,23,1);
GetPosValue(L3,CON,24,1);
GetPosValue(G1,CON,25,1);
GetPosValue(CCMX,CON,26,1);
GetPosValue(CCMN,CON,27,1);
GetPosValue(NSR,CON,28,1);
GetPosValue(FSR,CON,29,1);
GetPosValue(RSR,CON,30,1);
GetPosValue(CID,CON,31,1);
GetPosValue(CD,CON,32,1);
IT=IT/25.4;
QString _proOut = "";
if(CTH < 5 || CTH > 15)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׹ܺ<EFBFBD><EFBFBD><EFBFBD>CTH<EFBFBD><EFBFBD><EFBFBD>磨5~15mm<6D><6D>\n";
if(CT != 1 && CT != 2)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CT<EFBFBD><EFBFBD><EFBFBD>磨1-<2D><><EFBFBD>ܶ<EFBFBD>ˮ<EFBFBD>࣬2-<2D><><EFBFBD><EFBFBD>ˮ<EFBFBD>\n";
if(IT*25.4 < 100 || IT*25.4 > 200)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׹ܳߴ<EFBFBD>IT<EFBFBD><EFBFBD><EFBFBD>磨100~200mm<6D><6D>\n";
if(MT != 1 && MT != 2)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MT<EFBFBD><EFBFBD><EFBFBD>磨1-ˮ<><CBAE><EFBFBD><EFBFBD>2-<2D>ͻ<EFBFBD><CDBB><EFBFBD>\n";
if(STEV < 4000 || STEV > 7000)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STEV<EFBFBD><EFBFBD><EFBFBD>磨4000~7000m/s<><73>\n";
if(ZM1 < 0.5 || ZM1 > 10)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迹ZM1<EFBFBD><EFBFBD><EFBFBD>磨0.5~10MRayls<6C><73>\n";
if(LSM != 1 && LSM != 2)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>LSM<EFBFBD><EFBFBD><EFBFBD>磨1-ƽ<><C6BD><EFBFBD><EFBFBD>2-<2D><>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>\n";
if(RWD <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񲨿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱRWD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>\n";
if(RWL <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RWL<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>\n";
if(FPS <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>FPS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>\n";
if(FPE <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>FPE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>\n";
if(FPS >= FPE)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>FPS/<2F><>ķ<EFBFBD><C4B7>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>FPE<50><45>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FPS < FPE<50><45>\n";
if(RM1 <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>RM1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0kHz<EFBFBD><EFBFBD>\n";
if(RM2 <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RM2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0kHz<EFBFBD><EFBFBD>\n";
if(RM1 >= RM2)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>RM1/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RM2<4D><32>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RM1 < RM2<4D><32>\n";
if(RL <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>򴰳<EFBFBD>RL<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>\n";
if(S1 <= 0 || S1 >= 100)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֹS1<EFBFBD><EFBFBD><EFBFBD>磨0~100%<25><>\n";
if(S2 <= 0 || S2 >= 100)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>ֵֹS2<EFBFBD><EFBFBD><EFBFBD>磨0~100%<25><>\n";
if(S3 <= 0 || S3 >= 100)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ֵֹS3<EFBFBD><EFBFBD><EFBFBD>磨0~100%<25><>\n";
if(S1 >= S2 || S1 >= S3 || S2 >= S3)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S1/S2/S3<53><33>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S1 < S2 < S3<53><33>\n";
if(L1 <= 0 || L1 >= 100)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ֵֹS1<EFBFBD><EFBFBD><EFBFBD>磨0~100%<25><>\n";
if(L2 <= 0 || L2 >= 100)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>ֵֹS2<EFBFBD><EFBFBD><EFBFBD>磨0~100%<25><>\n";
if(L3 <= 0 || L2 >= 100)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֹS3<EFBFBD><EFBFBD><EFBFBD>磨0~100%<25><>\n";
if(L1 >= L2 || L1 >= L3 || L2 >= L3)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L1/L2/L3<4C><33>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L1 < L2 < L3<4C><33>\n";
if(G1 <= 0 || G1 >= 100)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵֹG1<EFBFBD><EFBFBD><EFBFBD>磨0~100%<25><>\n";
if(CCMX <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޽<EFBFBD>ֵֹCCMX<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0m<EFBFBD><EFBFBD>\n";
if(CCMN <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޽<EFBFBD>ֵֹCCMN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0m<EFBFBD><EFBFBD>\n";
if(CCMN >= CCMX)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD>CCMN/CCMX<4D><58>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CCMN < CCMX<4D><58>\n";
if(CID <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CID<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0mm<EFBFBD><EFBFBD>\n";
if(CD <= 0)
_proOut += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0mm<EFBFBD><EFBFBD>\n";
if(_proOut != ""){
_proOut += "<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
AfxMessageBox(_proOut);
#pragma region <20>ռ<EFBFBD><D5BC>ͷ<EFBFBD>
for(int _ii = 0; _ii< 36; _ii++)
{
delete []N2D[_ii];
}delete []N2D;
for(int _ii = 0; _ii < 36; _ii++)
{
delete []F2D[_ii];
}delete []F2D;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R2D[_ii];
}delete []R2D;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []RR2D[_ii];
}delete []RR2D;
//<2F><>
for(int _ii = 0; _ii < 36; _ii++)
{
delete []N_hx_abs[_ii];
}delete []N_hx_abs;
for(int _ii = 0; _ii < 36; _ii++)
{
delete []F_hx_abs[_ii];
}delete []F_hx_abs;
//<2F><><EFBFBD><EFBFBD>
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]R_hx_group[_ii];
}delete[]R_hx_group;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R_hx_abs[_ii];
}delete []R_hx_abs;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R_XX_abs[_ii];
}delete []R_XX_abs;
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]F_lb[_ii];
}delete[]F_lb;
#pragma endregion
return 0;
}
//------------------------------------------1 <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ģ<DEB8>--------------------------------------------------
mmProgress.SetDepth(HD.Dep);
HD.Dep;
int a = 0;
float SPR[3]={1};
float CmQ[2]={0};
float FGN[36], NGN[36], RGN[72], FDL[36], NDL[36], RDL[72];
float F2D0[36][300], N2D0[36][300], R2D0[72][300];
float ATT[72],RATE[72],ATTC[72],ZCC[72],SLG[72],THC[72],AMP[72];
#pragma region <20><><EFBFBD>ݻ<EFBFBD>ȡ
//GetINValue(FGN,1,36);
//GetINValue(NGN,3,36);
//GetINValue(RGN,5,72);
//GetINValue(FDL,2,36);
//GetINValue(NDL,4,36);
//GetINValue(RDL,6,72);
MemRdWt.ReadWaveToFloatBuf(FGN_index, HD.Dep, 1,FGN);
MemRdWt.ReadWaveToFloatBuf(NGN_index, HD.Dep, 1,NGN);
MemRdWt.ReadWaveToFloatBuf(RGN_index, HD.Dep, 1,RGN);
MemRdWt.ReadWaveToFloatBuf(FDL_index, HD.Dep, 1,FDL);
MemRdWt.ReadWaveToFloatBuf(NDL_index, HD.Dep, 1,NDL);
MemRdWt.ReadWaveToFloatBuf(RDL_index, HD.Dep, 1,RDL);
if(FGN[0] <= -9999 || NGN[0] <= -9999 || RGN[0] <= -9999 || FDL[0] <= -9999 || NDL[0] <= -9999 || RDL[0] <= -9999)
{
#pragma region <20>ռ<EFBFBD><D5BC>ͷ<EFBFBD>
for(int _ii = 0; _ii< 36; _ii++)
{
delete []N2D[_ii];
}delete []N2D;
for(int _ii = 0; _ii < 36; _ii++)
{
delete []F2D[_ii];
}delete []F2D;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R2D[_ii];
}delete []R2D;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []RR2D[_ii];
}delete []RR2D;
//<2F><>
for(int _ii = 0; _ii < 36; _ii++)
{
delete []N_hx_abs[_ii];
}delete []N_hx_abs;
for(int _ii = 0; _ii < 36; _ii++)
{
delete []F_hx_abs[_ii];
}delete []F_hx_abs;
//<2F><><EFBFBD><EFBFBD>
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]R_hx_group[_ii];
}delete[]R_hx_group;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R_hx_abs[_ii];
}delete []R_hx_abs;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R_XX_abs[_ii];
}delete []R_XX_abs;
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]F_lb[_ii];
}delete[]F_lb;
#pragma endregion
AfxMessageBox("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return 0;
}
for(int _i = 0; _i < 36; _i++)
{
MemRdWt.ReadWaveToFloatBuf(FWAVEindex[_i], HD.Dep, 1, F2D0[_i]);
MemRdWt.ReadWaveToFloatBuf(NWAVEindex[_i], HD.Dep, 1, N2D0[_i]);
}
for(int _i = 0; _i < 72; _i++)
{
MemRdWt.ReadWaveToFloatBuf(RWAVEindex[_i], HD.Dep, 1, R2D0[_i]);
}
#pragma endregion
//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 36; i++)
{
for (int j = 0; j < 300; j++)
{
F2D[i][j] = F2D0[i][j]/FGN[i];
N2D[i][j] = N2D0[i][j]/NGN[i];
}
}
float V=1500,RNS,RNE,D;
D=(IT*25.4/2-CTH-CID)*1e-3*2;
int rll=RL/RSR*1e3;
for (int i = 0; i < 72; i++)
{
for (int j = 0; j < 300; j++)
{
R2D[i][j] = R2D0[i][j]/RGN[i];
RNS=floor((D/V)/(RSR*0.000000001))-RDL[i]/(RSR);
RNE=RNS+rll;
}
}
//------------------------------------------3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣨷<EFBFBD><F2A3A8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵط<C4B5><D8B7><EFBFBD>--------------------------------------------------
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float Att0all[36],Att0all1[36],Rateall[72],Thick[72],Att_c[72],Zc_end[72], Zm_end[72];
float Rf[72],N_hx_abs_max[36], F_hx_abs_max[36], R_hx_abs_max[72],R_hx_phah_min[72] ,S_welldata2D_max[72], S_welldata2D_min[72], N_maxindex[72], F_maxindex[72], S_maxindex[72], maxindex[72], minindex[72];
//Զ<><D4B6><EFBFBD>ε<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
hilbert(F2D, F_hx_abs, 36);//Զ<><D4B6>ǰ12<31><32>
/*for (int i = 0; i < 36; i++)
{
for (int j = 0; j < NN; j++)
{
F_hx_abs[i][j] = F2D[i][j];
}
}*/
for (int i = 0; i < 36; i++)
{
maxindex[i]=1;
F_hx_abs_max[i] = F_hx_abs[i][0];
}
maxInArray_self(F_hx_abs, F_hx_abs_max, maxindex,1, NN, 36, 1);
int FPE1=FPE;
int FPS1=FPS;
float pf[36] = { 0 }, lf[36] = { 0 };
float **pksf = new float*[36];
for (int _ii = 0; _ii < 36; _ii++)
pksf[_ii] = new float[FPE1];
float **locsf = new float*[36];
for (int _ii = 0; _ii < 36; _ii++)
locsf[_ii] = new float[FPE1];
for (int i = 0; i<36; i++)
{
for (int m = 0; m < FPE1; m++)
{
pksf[i][m] = 0;
locsf[i][m] = 0;
}
}
findPeaks(F_hx_abs, pksf, locsf, FPS1, FPE1);
for (int k = 0; k<36; k++)
{
for (int m = 0; m<FPE1; m++)
{
if (pksf[k][m] != 0)
{
pf[k] = pksf[k][m];
lf[k] = locsf[k][m];
if (pksf[k][m]>F_hx_abs_max[k]/3)
break;
}
else if (pksf[k][m] == 0)
break;
}
}
float fcy[36] = { 0 }, fmy[36] = { 0 };
for (int k = 0; k<36; k++)
{
for (int m = 0; m<FPE1; m++)
{
if (pksf[k][m] != 0)
{
fmy[k] = pksf[k][m];
fcy[k] = locsf[k][m];
if (pksf[k][m]>F_hx_abs_max[k] * 0.4)
break;
}
else if (pksf[k][m] == 0)
break;
}
}
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]pksf[_ii];
}delete[]pksf;
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]locsf[_ii];
}delete[]locsf;
//<2F>׹ܾ<D7B9><DCBE>ж<EFBFBD>
float fbc = 15;
float fcc[36] = { 0 };
float ffm[36] = { 0 };
float F_lb_max[36] = { 0 };
float CEC[18] = { 0 };
for (int i = 0; i < 36; i++)
{
fcc[i] = fcy[i] + fbc;
for (int j = 0; j < NN; j++)
{
if (j<fcc[i])
F_lb[i][j] = 0;
else
F_lb[i][j] = F_hx_abs[i][j];
}
}
for (int i = 0; i < 36; i++)
{
ffm[i] = 1;
F_lb_max[i] = F_lb[i][0];
}
int CEN = 150;
maxInArray_self(F_lb, F_lb_max, ffm,1, NN, 36, 1);
float pce[36] = { 0 }, lce[36] = { 0 };
float **pkce = new float*[36];
for (int _ii = 0; _ii < 36; _ii++)
pkce[_ii] = new float[CEN];
float **loce = new float*[36];
for (int _ii = 0; _ii < 36; _ii++)
loce[_ii] = new float[CEN];
for (int i = 0; i<36; i++)
{
for (int m = 0; m < CEN; m++)
{
pkce[i][m] = 0;
loce[i][m] = 0;
}
}
findPeaks(F_lb, pkce, loce, 1, CEN);
for (int k = 0; k<36; k++)
{
for (int m = 0; m<CEN; m++)
{
if (pkce[k][m] != 0)
{
pce[k] = pkce[k][m];
lce[k] = loce[k][m];
if (pkce[k][m]>F_lb_max[k] * 0.8)
break;
}
else if (pkce[k][m] == 0)
break;
}
}
Ecc_co(lce, CEC, FDL, RSR,36);
CEM =CEC[0];
for (int i = 1; i < 18; i++)
{
if (CEC[i] > CEM)
{
CEM = CEC[i];
}
}
CEM= 100 - CEM;
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]pkce[_ii];
}delete[]pkce;
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]loce[_ii];
}delete[]loce;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
hilbert(N2D,N_hx_abs,36);//<2F><><EFBFBD><EFBFBD>ǰ512<31><32>
/*for (int i = 0; i < 36; i++)
{
for (int j = 0; j < NN; j++)
{
N_hx_abs[i][j] = N2D[i][j];
}
}*/
for (int i = 0; i < 36; i++)
{
maxindex[i]=1;
N_hx_abs_max[i] = N_hx_abs[i][0];
}
maxInArray_self(N_hx_abs, N_hx_abs_max, maxindex,1, NN, 36, 1);
float pn[36] = { 0 }, ln[36] = { 0 };
float **pksn = new float*[36];
for (int _ii = 0; _ii < 36; _ii++)
pksn[_ii] = new float[FPE1];
float **locsn = new float*[36];
for (int _ii = 0; _ii < 36; _ii++)
locsn[_ii] = new float[FPE1];
for (int i = 0; i<36; i++)
{
for (int m = 0; m < FPE1; m++)
{
pksn[i][m] = 0;
locsn[i][m] = 0;
}
}
findPeaks(N_hx_abs, pksn, locsn, FPS1, FPE1);
for (int k = 0; k<36; k++)
{
for (int m = 0; m<FPS1; m++)
{
if (pksn[k][m] != 0)
{
pn[k] = pksn[k][m];
ln[k] = locsn[k][m];
if (pksn[k][m]>N_hx_abs_max[k]/3)
break;
}
else if (pksn[k][m] == 0)
break;
}
}
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]pksn[_ii];
}delete[]pksn;
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]locsn[_ii];
}delete[]locsn;
//˥<><CBA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int j = 0; j < 36; j++)
{
Att0all[j] = 20 / 0.1*log10(pn[j] / pf[j]);
if(Att0all[j]<0)
{Att0all[j]=(Att0all[j-1]+Att0all[j-2])/2;}
}
/*for (int j = 0; j < 36; j++)
{
Att0all[j] = 20 / 0.1*log10(N_hx_abs_max[j] / F_hx_abs_max[j]);
}*/
//<2F>׹ܺ<D7B9><DCBA>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fft(R2D, RR2D,R_hx_group, R_XX_abs,72,RNS,RNE); //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>
/*for (int i = 0; i < 72; i++)
{
for (int j = 0; j < NN*2; j++)
{
R_XX_abs[i][j] = RR2D[i][j];
R_hx_group[i][j]=RR2D[i][j];
}
}*/
float ref = 0.5*STEV / CTH;//<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
float RN1 = round((ref - RM1)*6/25);
float RN2 = round((ref + RM2)*6/25);
int RN11=RN1;
for (int i = 0; i < 72; i++)
{
minindex[i]=RN1;
R_hx_phah_min[i] = R_hx_group[i][RN11];
}
minInArray_self(R_hx_group, R_hx_phah_min, minindex, RN1,RN2, 72, 1);
THerr=0;
Thc_co(THCAV, Rf, THC, minindex, RSR, STEV, NN*2);
THerr=sqrt((THCAV[0]-CTH)*(THCAV[0]-CTH))/CTH*100;
float THLR;
THLR=sqrt(((THCAV[0]-CTH)/CTH)*((THCAV[0]-CTH)/CTH))*100;
float THCMN= THC[0];
for (int i = 1; i < 72; i++)
{
if (THC[i] <THCMN)
{
THCMN = THC[i];
}
}
float THCMX= THC[0];
for (int i = 1; i < 72; i++)
{
if (THC[i] >THCMX)
{
THCMX = THC[i];
}
}
THCSD=CTH;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>
hilbert2(RR2D,R_hx_abs,72);
/*for (int i = 0; i < 72; i++)
{
for (int j = 0; j < NN; j++)
{
R_hx_abs[i][j] = R2D[i][j];
}
}*/
for (int i = 0; i < 72; i++)
{
maxindex[i]=1;
R_hx_abs_max[i] = R_hx_abs[i][0];
}
maxInArray_self(R_hx_abs, R_hx_abs_max, maxindex,1, NN, 72, 1);
Rate_co(R_hx_abs, RATE, maxindex, R_hx_abs_max, RSR, RWD, RWL,NN);
float amp[72];
for (int i = 0; i < 72; i++)
{
maxindex[i]=1;
amp[i] = R_hx_abs[i][0];
}
maxInArray_self(R_hx_abs, amp, maxindex,50, NN, 72, 1);
float ampg[72];
for (int i = 1; i < 72; i++)
{
ampg[i]=amp[i]/RGN[i];
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
float ECC[36];
Ecc_co(maxindex, ECC, RDL, RSR,72);
ECM= ECC[0];
for (int i = 1; i < 36; i++)
{
if (ECC[i] > ECM)
{
ECM = ECC[i];
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA>״̬
float BW1 = BW * 100;
float ZM2=1.5;
Zc_Zm_comb(Att0all, ATT, RATE, CON2, CON1, CTH, IT, CD, BW1, CT, LSM, CON3,Zc_end, Zm_end, ZM1, ZM2);
Att_c_find2(Att_c, ATT, CTH, Zm_end, CON1);
SLG_plate(SLG, Zc_end, Att_c, CTH, CT, gd_Zc, gd_Att, ld_Zc, ld_Att, sd_Zc, sd_Att, gu_Zc, gu_Att, lu_Zc, lu_Att, su_Zc, su_Att);
S_cal(SLG,SPR,CmQ,S1,S2,S3,L1,L2,L3,G1,CCMX,CCMN);
SPR_all=SPR[0];
LPR_all=SPR[1];
GPR_all=SPR[2];
/*for(int j=0;j<72;j++)
{
FSLG[j][fiii]=SLG[j];
}*/
FDEP[fiii]=HD.Dep;
FSPR[fiii]=SPR_all;
FGPR[fiii]=GPR_all;
fiii++;
//-------------------------------------------4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>)-------------------------------------------------
//<2F><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
if(ATT_index > 0) MemRdWt.WriteWave(ATT_index, HD.Dep, 1, &Att0all);//ֱ<>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD>õ<EFBFBD>
if(RATE_index > 0) MemRdWt.WriteWave(RATE_index, HD.Dep, 1, &RATE);
if(ATTC_index > 0) MemRdWt.WriteWave(ATTC_index, HD.Dep, 1, &Att_c);//<2F>׺<EFBFBD>˥<EFBFBD><CBA5>
if(ZCC_index > 0) MemRdWt.WriteWave(ZCC_index, HD.Dep, 1, &Zc_end);//<2F>׺<EFBFBD><D7BA>
if(SLG_index > 0) MemRdWt.WriteWave(SLG_index, HD.Dep, 1, &SLG);
if(THC_index > 0) MemRdWt.WriteWave(THC_index, HD.Dep, 1, &THC);
if(AMP_index > 0) MemRdWt.WriteWave(AMP_index, HD.Dep, 1, &amp);
//һά<D2BB><CEAC><EFBFBD><EFBFBD>
if(THCAV_index > 0) MemRdWt.WriteCurve(THCAV_index,HD.Dep,1,&THCAV);
if(THerr_index > 0) MemRdWt.WriteCurve(THerr_index,HD.Dep,1,&THerr);
if(THCAV_index > 0) MemRdWt.WriteCurve(THCAV_index,HD.Dep,1,&THCAV);
if(THCMN_index > 0) MemRdWt.WriteCurve(THCMN_index,HD.Dep,1,&THCMN);
if(THCMX_index > 0) MemRdWt.WriteCurve(THCMX_index,HD.Dep,1,&THCMX);
if(THLR_index > 0) MemRdWt.WriteCurve(THLR_index,HD.Dep,1,&THLR);
if(CEM_index > 0) MemRdWt.WriteCurve(CEM_index,HD.Dep,1,&CEM);
if(ECM_index > 0) MemRdWt.WriteCurve(ECM_index,HD.Dep,1,&ECM);
if(THCSD_index > 0) MemRdWt.WriteCurve(THCSD_index,HD.Dep,1,&THCSD);
if(SPR_all_index > 0) MemRdWt.WriteCurve(SPR_all_index,HD.Dep,1,&SPR_all);
if(LPR_all_index > 0) MemRdWt.WriteCurve(LPR_all_index,HD.Dep,1,&LPR_all);
if(GPR_all_index > 0) MemRdWt.WriteCurve(GPR_all_index,HD.Dep,1,&GPR_all);
MemRdWt.In();
}
Fdpr *fdpr=new Fdpr[fiii];
for(int i=0;i<fiii;i++)
{
fdpr[i].fdep=FDEP[i];
fdpr[i].fgpr=FGPR[i];
fdpr[i].fspr=FSPR[i];
}
int dataSize =fiii;
const int maxSegments = fiii;
int segmentCount = 0;
Fdpr*** segments = new Fdpr**[maxSegments];
int* segmentLengths = new int[maxSegments](); // ÿ<>εij<CEB5><C4B3><EFBFBD>
float* segmentAverages = new float[maxSegments](); // <20>洢ÿ<E6B4A2>ε<EFBFBD>ƽ<EFBFBD><C6BD>ֵ
float* segmentGAverages = new float[maxSegments]();
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
segments[segmentCount] = new Fdpr*[dataSize];
segments[segmentCount][segmentLengths[segmentCount]++] = &fdpr[0];
// <20><>ǰ<EFBFBD>ε<EFBFBD><79><D6B5>Χ
int currentRange = getRange(fdpr[0].fspr,S1,S2,S3);
// <20>ֶ<EFBFBD><D6B6>߼<EFBFBD>
for (int i = 1; i < dataSize; ++i) {
int newRange = getRange(fdpr[i].fspr,S1,S2,S3);
if (newRange != currentRange) {
// <20><><EFBFBD>㵱ǰ<E3B5B1>ε<EFBFBD>ƽ<EFBFBD><C6BD>ֵ
float sum = 0;
float sumg = 0;
for (int j = 0; j < segmentLengths[segmentCount]; ++j) {
sum += segments[segmentCount][j]->fspr;
sumg += segments[segmentCount][j]->fgpr;
}
segmentAverages[segmentCount] = sum / segmentLengths[segmentCount];
segmentGAverages[segmentCount] = sumg / segmentLengths[segmentCount];
// <20><><EFBFBD>ɵ<EFBFBD>ǰ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>ʼ<EFBFBD><EFBFBD>
segmentCount++;
segments[segmentCount] = new Fdpr*[dataSize];
currentRange = newRange;
}
segments[segmentCount][segmentLengths[segmentCount]++] = &fdpr[i];
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD>ƽ<EFBFBD><C6BD>ֵ
float sum = 0;
float sumg = 0;
for (int j = 0; j < segmentLengths[segmentCount]; ++j) {
sum += segments[segmentCount][j]->fspr;
sumg += segments[segmentCount][j]->fgpr;
}
segmentAverages[segmentCount] = sum / segmentLengths[segmentCount];
segmentGAverages[segmentCount] = sumg / segmentLengths[segmentCount];
segmentCount++; // ʵ<>ʵĶ<CAB5><C4B6><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ֶν<D6B6><CEBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>ֵ
/*FILE *tb1;
tb1=fopen("E:\\seg.txt","w");
for (int i = 0; i < segmentCount; i++)
{
fprintf(tb1,"%d\t",i+1);
fprintf(tb1,"%f\t",segmentAverages[i]);
fprintf(tb1,"%f\t",segments[i][0]->fdep);
fprintf(tb1,"%f\t",segments[i][segmentLengths[i]-1]->fdep);
fprintf(tb1,"\n");
}
fclose(tb1);*/
GUJING *CCNN1=new GUJING[segmentCount];
for (int i = 0; i < segmentCount; i++)
{
CCNN1[i].GNO=i+1;
CCNN1[i].GSDEP=segments[i][0]->fdep;
if(i+1==segmentCount)
CCNN1[i].GEDEP=segments[i][segmentLengths[i]-1]->fdep;
else
CCNN1[i].GEDEP=segments[i+1][0]->fdep;
CCNN1[i].GRESULT=Grs(segmentAverages[i],segmentGAverages[i],S1,S2,S3,L1,L2,L3,G1);
}
/*FILE *tb11;
tb11=fopen("E:\\CN1.txt","w");
for (int i = 0; i < segmentCount; i++)
{
fprintf(tb11,"%d\t",CCNN1[i].GNO);
fprintf(tb11,"%f\t",CCNN1[i].GSDEP);
fprintf(tb11,"%f\t",CCNN1[i].GEDEP);
fprintf(tb11,"%d\t",CCNN1[i].GRESULT);
fprintf(tb11,"\n");
}
fclose(tb11);*/
for (int i = 1; i < segmentCount-1; i++)
{
if(CCNN1[i].GEDEP-CCNN1[i].GSDEP<0.5&&CCNN1[i].GRESULT==1)
{
if(CCNN1[i-1].GRESULT==CCNN1[i+1].GRESULT)
CCNN1[i].GRESULT=CCNN1[i-1].GRESULT;
}
}
for (int i = 1; i < segmentCount-1; i++)
{
if(CCNN1[i].GEDEP-CCNN1[i].GSDEP<0.5)
{
if(CCNN1[i-1].GRESULT==CCNN1[i+1].GRESULT&&CCNN1[i-1].GRESULT==1)
CCNN1[i].GRESULT=1;
}
}
GUJING *CCNN2=new GUJING[segmentCount];
int CN2=1;
CCNN2[0]=CCNN1[0];
CCNN2[0].GNO=1;
for (int i = 0; i < segmentCount-1; i++)
{
if(CCNN1[i].GRESULT==CCNN1[i+1].GRESULT)
{
CCNN2[CN2-1].GEDEP=CCNN1[i+1].GEDEP;
}
else
{
CCNN2[CN2]=CCNN1[i+1];
CCNN2[CN2].GNO=CN2+1;
CN2++;
}
}
/*FILE *tb1;
tb1=fopen("E:\\CN2.txt","w");
for (int i = 0; i < CN2; i++)
{
fprintf(tb1,"%d\t",CCNN2[i].GNO);
fprintf(tb1,"%f\t",CCNN2[i].GSDEP);
fprintf(tb1,"%f\t",CCNN2[i].GEDEP);
fprintf(tb1,"%d\t",CCNN2[i].GRESULT);
fprintf(tb1,"\n");
}
fclose(tb1);*/
for (int i = 1; i < CN2-1; i++)
{
if(CCNN2[i].GEDEP-CCNN2[i].GSDEP<1&&CCNN2[i].GRESULT==1)
{
if(CCNN2[i-1].GRESULT==CCNN2[i+1].GRESULT)
CCNN2[i].GRESULT=CCNN2[i-1].GRESULT;
}
}
for (int i = 1; i < CN2-1; i++)
{
if(CCNN2[i].GEDEP-CCNN2[i].GSDEP<1)
{
if(CCNN2[i-1].GRESULT==CCNN2[i+1].GRESULT&&CCNN2[i-1].GRESULT==1)
CCNN2[i].GRESULT=1;
}
}
GUJING *CCNN3=new GUJING[CN2];
int CN3=1;
CCNN3[0]=CCNN2[0];
CCNN3[0].GNO=1;
for (int i = 0; i < CN2-1; i++)
{
if(CCNN2[i].GRESULT==CCNN2[i+1].GRESULT)
{
CCNN3[CN3-1].GEDEP=CCNN2[i+1].GEDEP;
}
else
{
CCNN3[CN3]=CCNN2[i+1];
CCNN3[CN3].GNO=CN3+1;
CN3++;
}
}
//float *CSLG=new float[FLE];
for (int i = 0; i < CN3; i++)
{
float cspr=0;
float cgpr=0;
float cns=0;
for(int j = 0; j < FLE; j++)
{
if(FDEP[j]>=CCNN3[i].GSDEP&&FDEP[j]<=CCNN3[i].GEDEP)
{
cspr=cspr+FSPR[j];
cgpr=cgpr+FGPR[j];
cns++;
}
}
cspr=cspr/cns;
cgpr=cgpr/cns;
CCNN3[i].GRESULT=Grs(cspr,cgpr,S1,S2,S3,L1,L2,L3,G1);
}
for (int i = 1; i < CN3-1; i++)
{
if(CCNN3[i].GEDEP-CCNN3[i].GSDEP<1)
{
if(CCNN3[i-1].GRESULT==CCNN3[i+1].GRESULT)
CCNN3[i].GRESULT=CCNN3[i-1].GRESULT;
else if(CCNN3[i-1].GRESULT<CCNN3[i+1].GRESULT)
CCNN3[i].GRESULT=CCNN3[i-1].GRESULT;
else if(CCNN3[i-1].GRESULT>CCNN3[i+1].GRESULT)
CCNN3[i].GRESULT=CCNN3[i+1].GRESULT;
}
}
GUJING *CCNN4=new GUJING[CN3];
int CN4=1;
CCNN4[0]=CCNN3[0];
CCNN4[0].GNO=1;
for (int i = 0; i < CN3-1; i++)
{
if(CCNN3[i].GRESULT==CCNN3[i+1].GRESULT)
{
CCNN4[CN4-1].GEDEP=CCNN3[i+1].GEDEP;
}
else
{
CCNN4[CN4]=CCNN3[i+1];
CCNN4[CN4].GNO=CN4+1;
CN4++;
}
}
for (int i = 0; i < CN4; i++)
{
float cspr=0;
float cgpr=0;
float cns=0;
for(int j = 0; j < FLE; j++)
{
if(FDEP[j]>=CCNN4[i].GSDEP&&FDEP[j]<=CCNN4[i].GEDEP)
{
cspr=cspr+FSPR[j];
cgpr=cgpr+FGPR[j];
cns++;
}
}
cspr=cspr/cns;
cgpr=cgpr/cns;
CCNN4[i].GRESULT=Grs(cspr,cgpr,S1,S2,S3,L1,L2,L3,G1);
}
GUJING *CCNN5=new GUJING[CN4];
int CN5=1;
CCNN5[0]=CCNN4[0];
CCNN5[0].GNO=1;
for (int i = 0; i < CN4-1; i++)
{
if(CCNN4[i].GRESULT==CCNN4[i+1].GRESULT)
{
CCNN5[CN5-1].GEDEP=CCNN4[i+1].GEDEP;
}
else
{
CCNN5[CN5]=CCNN4[i+1];
CCNN5[CN5].GNO=CN5+1;
CN5++;
}
}
for (int i = 0; i < CN5; i++)
{
switch(CCNN5[i].GRESULT)
{
case 0:
CCNN5[i].GRESULT=7;
break;
case 1:
CCNN5[i].GRESULT=8;
break;
case 2:
CCNN5[i].GRESULT=9;
break;
case 3:
CCNN5[i].GRESULT=10;
break;
case 4:
CCNN5[i].GRESULT=6;
break;
case 5:
CCNN5[i].GRESULT=11;
break;
}
}
for (int i = 0; i < CN5; i++)
{
MemRdWt.WriteTable(itable1, i+1, &CCNN5[i]);
}
for (int i = 0; i < CN5; i++)
{
switch(CCNN5[i].GRESULT)
{
case 7:
CCNN5[i].GRESULT=12;
break;
case 8:
CCNN5[i].GRESULT=12;
break;
case 9:
CCNN5[i].GRESULT=13;
break;
case 10:
{
float cspr=0;
float cns=0;
for(int j = 0; j < FLE; j++)
{
if(FDEP[j]>=CCNN5[i].GSDEP&&FDEP[j]<=CCNN5[i].GEDEP)
{
cspr=cspr+FSPR[j];
cns++;
}
}
cspr=cspr/cns;
if(cspr>100-S2)
CCNN5[i].GRESULT=15;
else
CCNN5[i].GRESULT=14;
break;
}
case 6:
CCNN5[i].GRESULT=15;
break;
case 11:
CCNN5[i].GRESULT=15;
break;
}
}
GUJING *CCNN6=new GUJING[CN5];
int CN6=1;
CCNN6[0]=CCNN5[0];
CCNN6[0].GNO=1;
for (int i = 0; i < CN5-1; i++)
{
if(CCNN5[i].GRESULT==CCNN5[i+1].GRESULT)
{
CCNN6[CN6-1].GEDEP=CCNN5[i+1].GEDEP;
}
else
{
CCNN6[CN6]=CCNN5[i+1];
CCNN6[CN6].GNO=CN6+1;
CN6++;
}
}
for (int i = 0; i < CN6; i++)
{
MemRdWt.WriteTable(itable2, i+1, &CCNN6[i]);
}
// <20>ͷŶ<CDB7>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
delete[] CCNN1;
delete[] CCNN2;
delete[] CCNN3;
delete[] CCNN4;
delete[] CCNN5;
delete[] CCNN6;
delete[] fdpr;
for (int i = 0; i < segmentCount; ++i) {
delete[] segments[i]; // <20>ͷ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>εĶ<CEB5>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
}
delete[] segments; // <20>ͷŴ洢<C5B4><E6B4A2>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
delete[] segmentLengths; // <20>ͷŶγ<C5B6><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
delete[] segmentAverages; // <20>ͷ<EFBFBD>ƽ<EFBFBD><C6BD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
delete[] segmentGAverages;
delete[] FDEP;
delete[] FSPR;
delete[] FGPR;
#pragma region <20>ռ<EFBFBD><D5BC>ͷ<EFBFBD>
for(int _ii = 0; _ii< 36; _ii++)
{
delete []N2D[_ii];
}delete []N2D;
for(int _ii = 0; _ii < 36; _ii++)
{
delete []F2D[_ii];
}delete []F2D;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R2D[_ii];
}delete []R2D;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []RR2D[_ii];
}delete []RR2D;
//<2F><>
for(int _ii = 0; _ii < 36; _ii++)
{
delete []N_hx_abs[_ii];
}delete []N_hx_abs;
for(int _ii = 0; _ii < 36; _ii++)
{
delete []F_hx_abs[_ii];
}delete []F_hx_abs;
//<2F><><EFBFBD><EFBFBD>
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]R_hx_group[_ii];
}delete[]R_hx_group;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R_hx_abs[_ii];
}delete []R_hx_abs;
for(int _ii = 0; _ii < 72; _ii++)
{
delete []R_XX_abs[_ii];
}delete []R_XX_abs;
for (int _ii = 0; _ii < 36; _ii++)
{
delete[]F_lb[_ii];
}delete[]F_lb;
#pragma endregion
/*N2D = nullptr;
F2D = nullptr;
R2D = nullptr;
RR2D = nullptr;
N_hx_abs = nullptr;
F_hx_abs = nullptr;
R_hx_group = nullptr;
R_hx_abs = nullptr;
R_XX_abs = nullptr;
F_lb = nullptr; */
cout << "The run time is: " << (float)clock() / CLOCKS_PER_SEC << "s" << endl;
return 1;
}