First update.
This commit is contained in:
@@ -81,25 +81,25 @@ namespace
|
||||
if(aExpInfo.Hardware == "USCT3dv3")
|
||||
{
|
||||
Matrix channelList = precalculateChannelList(aRlList, aRnList, aExpInfo, aPreComputes);
|
||||
double* channelListSizeData = Aurora::malloc(2);
|
||||
float* channelListSizeData = Aurora::malloc(2);
|
||||
channelListSizeData[0] = channelList.getDimSize(0);
|
||||
channelListSizeData[1] = channelList.getDimSize(1);
|
||||
Matrix channelListSize = Matrix::New(channelListSizeData, 2, 1);
|
||||
Matrix ind = sub2ind(channelListSize, {blockData.rlBlock, blockData.rnBlock});
|
||||
size_t channelListBlockSize = ind.getDataSize();
|
||||
double* channelListBlockData = Aurora::malloc(channelListBlockSize);
|
||||
float* channelListBlockData = Aurora::malloc(channelListBlockSize);
|
||||
for(size_t i=0; i<channelListBlockSize; ++i)
|
||||
{
|
||||
channelListBlockData[i] = channelList[ind[i] - 1];
|
||||
}
|
||||
Matrix channelListBlock = Matrix::New(channelListBlockData, 1, channelListBlockSize);
|
||||
Matrix fx = fft(ascanBlock);
|
||||
double* fhData = Aurora::malloc(aExpInfo.matchedFilter.getDimSize(0) * channelListBlockSize, true);
|
||||
float* fhData = Aurora::malloc(aExpInfo.matchedFilter.getDimSize(0) * channelListBlockSize, true);
|
||||
Matrix fh = Matrix::New(fhData, aExpInfo.matchedFilter.getDimSize(0), channelListBlockSize, 1, Aurora::Complex);
|
||||
size_t matchedFilterRowDataSize = aExpInfo.matchedFilter.getDimSize(0)*2;
|
||||
for(size_t i=0; i<channelListBlockSize; ++i)
|
||||
{
|
||||
cblas_dcopy(matchedFilterRowDataSize, aExpInfo.matchedFilter.getData() + (size_t)(channelListBlock[i] - 1) * matchedFilterRowDataSize, 1 , fhData ,1);
|
||||
cblas_scopy(matchedFilterRowDataSize, aExpInfo.matchedFilter.getData() + (size_t)(channelListBlock[i] - 1) * matchedFilterRowDataSize, 1 , fhData ,1);
|
||||
fhData += matchedFilterRowDataSize;
|
||||
}
|
||||
// Matrix fxReal = Aurora::real(fx);
|
||||
@@ -108,23 +108,23 @@ namespace
|
||||
// Matrix fhImag = Aurora::imag(fh);
|
||||
// Matrix real = fxReal * fhReal + fxImag * fhImag;
|
||||
// Matrix image = fxImag * fhReal - fxReal * fhImag;
|
||||
double* value1 = Aurora::malloc(fx.getDataSize());
|
||||
vdMulI(fx.getDataSize(), fx.getData(), 2, fh.getData(), 2, value1, 1);
|
||||
double* value2 = Aurora::malloc(fx.getDataSize());
|
||||
vdMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData() + 1, 2, value2, 1);
|
||||
double* realData = Aurora::malloc(fx.getDataSize());
|
||||
vdAdd(fx.getDataSize(), value1, value2, realData);
|
||||
float* value1 = Aurora::malloc(fx.getDataSize());
|
||||
vsMulI(fx.getDataSize(), fx.getData(), 2, fh.getData(), 2, value1, 1);
|
||||
float* value2 = Aurora::malloc(fx.getDataSize());
|
||||
vsMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData() + 1, 2, value2, 1);
|
||||
float* realData = Aurora::malloc(fx.getDataSize());
|
||||
vsAdd(fx.getDataSize(), value1, value2, realData);
|
||||
Matrix real = Matrix::New(realData, fx.getDimSize(0), fx.getDimSize(1));
|
||||
|
||||
vdMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData(), 2, value1, 1);
|
||||
vdMulI(fx.getDataSize(), fx.getData(), 2, fh.getData() + 1, 2, value2, 1);
|
||||
double* imagData = Aurora::malloc(fx.getDataSize());
|
||||
vdSub(fx.getDataSize(), value1, value2, imagData);
|
||||
vsMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData(), 2, value1, 1);
|
||||
vsMulI(fx.getDataSize(), fx.getData(), 2, fh.getData() + 1, 2, value2, 1);
|
||||
float* imagData = Aurora::malloc(fx.getDataSize());
|
||||
vsSub(fx.getDataSize(), value1, value2, imagData);
|
||||
Matrix image = Matrix::New(imagData, fx.getDimSize(0), fx.getDimSize(1));
|
||||
|
||||
double* complexData = Aurora::malloc(real.getDataSize(), true);
|
||||
cblas_dcopy(real.getDataSize(), real.getData(), 1 , complexData ,2);
|
||||
cblas_dcopy(image.getDataSize(), image.getData(), 1 , complexData + 1 ,2);
|
||||
float* complexData = Aurora::malloc(real.getDataSize(), true);
|
||||
cblas_scopy(real.getDataSize(), real.getData(), 1 , complexData ,2);
|
||||
cblas_scopy(image.getDataSize(), image.getData(), 1 , complexData + 1 ,2);
|
||||
Matrix complex = Matrix::New(complexData, real.getDimSize(0), real.getDimSize(1), 1, Aurora::Complex);
|
||||
ascanBlock = Aurora::real(ifft(complex));
|
||||
|
||||
@@ -134,28 +134,28 @@ namespace
|
||||
matchedFilterRowDataSize = aExpInfoRef.matchedFilter.getDimSize(0)*2;
|
||||
for(size_t i=0; i<channelListBlockSize; ++i)
|
||||
{
|
||||
cblas_dcopy(matchedFilterRowDataSize, aExpInfoRef.matchedFilter.getData() + (size_t)(channelListBlock[i] - 1) * matchedFilterRowDataSize, 1 , fhData ,1);
|
||||
cblas_scopy(matchedFilterRowDataSize, aExpInfoRef.matchedFilter.getData() + (size_t)(channelListBlock[i] - 1) * matchedFilterRowDataSize, 1 , fhData ,1);
|
||||
fhData += matchedFilterRowDataSize;
|
||||
}
|
||||
// real = Aurora::real(fx) * Aurora::real(fh) + Aurora::imag(fx) * Aurora::imag(fh);
|
||||
// image = Aurora::imag(fx) * Aurora::real(fh) - Aurora::real(fx) * Aurora::imag(fh);
|
||||
vdMulI(fx.getDataSize(), fx.getData(), 2, fh.getData(), 2, value1, 1);
|
||||
vdMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData() + 1, 2, value2, 1);
|
||||
vsMulI(fx.getDataSize(), fx.getData(), 2, fh.getData(), 2, value1, 1);
|
||||
vsMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData() + 1, 2, value2, 1);
|
||||
realData = Aurora::malloc(fx.getDataSize());
|
||||
vdAdd(fx.getDataSize(), value1, value2, realData);
|
||||
vsAdd(fx.getDataSize(), value1, value2, realData);
|
||||
real = Matrix::New(realData, fx.getDimSize(0), fx.getDimSize(1));
|
||||
|
||||
vdMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData(), 2, value1, 1);
|
||||
vdMulI(fx.getDataSize(), fx.getData(), 2, fh.getData() + 1, 2, value2, 1);
|
||||
vsMulI(fx.getDataSize(), fx.getData() + 1, 2, fh.getData(), 2, value1, 1);
|
||||
vsMulI(fx.getDataSize(), fx.getData(), 2, fh.getData() + 1, 2, value2, 1);
|
||||
imagData = Aurora::malloc(fx.getDataSize());
|
||||
vdSub(fx.getDataSize(), value1, value2, imagData);
|
||||
vsSub(fx.getDataSize(), value1, value2, imagData);
|
||||
image = Matrix::New(imagData, fx.getDimSize(0), fx.getDimSize(1));
|
||||
Aurora::free(value1);
|
||||
Aurora::free(value2);
|
||||
|
||||
complexData = Aurora::malloc(real.getDataSize(), true);
|
||||
cblas_dcopy(real.getDataSize(), real.getData(), 1 , complexData ,2);
|
||||
cblas_dcopy(image.getDataSize(), image.getData(), 1 , complexData + 1 ,2);
|
||||
cblas_scopy(real.getDataSize(), real.getData(), 1 , complexData ,2);
|
||||
cblas_scopy(image.getDataSize(), image.getData(), 1 , complexData + 1 ,2);
|
||||
complex = Matrix::New(complexData, real.getDimSize(0), real.getDimSize(1), 1, Aurora::Complex);
|
||||
ascanBlockRef = Aurora::real(ifft(complex));
|
||||
}
|
||||
@@ -286,8 +286,8 @@ TransmissionData Recon::getTransmissionData(const Aurora::Matrix& aMotorPos, con
|
||||
}
|
||||
|
||||
size_t numScans = aMotorPos.getDataSize() * aSlList.getDataSize() * aSnList.getDataSize() * aRlList.getDataSize() * aRnList.getDataSize();
|
||||
Matrix tofDataTotal = Matrix::fromRawData(new double[numScans], 1, numScans) + NAN;
|
||||
Matrix attDataTotal = Matrix::fromRawData(new double[numScans], 1, numScans) + NAN;
|
||||
Matrix tofDataTotal = Matrix::fromRawData(new float[numScans], 1, numScans) + NAN;
|
||||
Matrix attDataTotal = Matrix::fromRawData(new float[numScans], 1, numScans) + NAN;
|
||||
Matrix waterTempList = zeros(1,numScans,1);
|
||||
Matrix senderList = zeros(3,numScans,1);
|
||||
Matrix receiverList = zeros(3,numScans,1);
|
||||
@@ -344,24 +344,24 @@ TransmissionData Recon::getTransmissionData(const Aurora::Matrix& aMotorPos, con
|
||||
size_t numUsedData = transmissionBlock.senderBlock.getDimSize(1);
|
||||
if(transParams::applyCalib)
|
||||
{
|
||||
cblas_dcopy(numUsedData, transmissionBlock.metaInfos.snrValues.getData(), 1, snrValues.getData() + numData, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.metaInfos.snrValuesRef.getData(), 1, snrValuesRef.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.metaInfos.snrValues.getData(), 1, snrValues.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.metaInfos.snrValuesRef.getData(), 1, snrValuesRef.getData() + numData, 1);
|
||||
}
|
||||
|
||||
int rows = transmissionBlock.senderBlock.getDimSize(0);
|
||||
cblas_dcopy(numUsedData * rows, transmissionBlock.senderBlock.getData(), 1, senderList.getData() + numData*rows, 1);
|
||||
cblas_dcopy(numUsedData * rows, transmissionBlock.receiverBlock.getData(), 1, receiverList.getData() + numData*rows, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.tofData.getData(), 1, tofDataTotal.getData() + numData, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.attData.getData(), 1, attDataTotal.getData() + numData, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.waterTempBlock.getData(), 1, waterTempList.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData * rows, transmissionBlock.senderBlock.getData(), 1, senderList.getData() + numData*rows, 1);
|
||||
cblas_scopy(numUsedData * rows, transmissionBlock.receiverBlock.getData(), 1, receiverList.getData() + numData*rows, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.tofData.getData(), 1, tofDataTotal.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.attData.getData(), 1, attDataTotal.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.waterTempBlock.getData(), 1, waterTempList.getData() + numData, 1);
|
||||
|
||||
if(transParams::saveDetection || transParams::outlierOnTasDetection || transParams::saveDebugInfomation)
|
||||
{
|
||||
cblas_dcopy(numUsedData, transmissionBlock.metaInfos.mpBlock.getData(), 1, mpBlockTotal.getData() + numData, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.metaInfos.slBlock.getData(), 1, slBlockTotal.getData() + numData, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.metaInfos.snBlock.getData(), 1, snBlockTotal.getData() + numData, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.metaInfos.rlBlock.getData(), 1, rlBlockTotal.getData() + numData, 1);
|
||||
cblas_dcopy(numUsedData, transmissionBlock.metaInfos.rnBlock.getData(), 1, rnBlockTotal.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.metaInfos.mpBlock.getData(), 1, mpBlockTotal.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.metaInfos.slBlock.getData(), 1, slBlockTotal.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.metaInfos.snBlock.getData(), 1, snBlockTotal.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.metaInfos.rlBlock.getData(), 1, rlBlockTotal.getData() + numData, 1);
|
||||
cblas_scopy(numUsedData, transmissionBlock.metaInfos.rnBlock.getData(), 1, rnBlockTotal.getData() + numData, 1);
|
||||
}
|
||||
numData += numUsedData;
|
||||
std::unique_lock<std::mutex> lockBufferCount(CREATE_BUFFER_MUTEX);
|
||||
@@ -376,7 +376,7 @@ TransmissionData Recon::getTransmissionData(const Aurora::Matrix& aMotorPos, con
|
||||
}
|
||||
speedUpThread.join();
|
||||
|
||||
double* filterData = Aurora::malloc(tofDataTotal.getDataSize());
|
||||
float* filterData = Aurora::malloc(tofDataTotal.getDataSize());
|
||||
for(int i=0;i<tofDataTotal.getDataSize();++i)
|
||||
{
|
||||
if(tofDataTotal[i] != tofDataTotal[i])
|
||||
@@ -420,7 +420,7 @@ TransmissionData Recon::getTransmissionData(const Aurora::Matrix& aMotorPos, con
|
||||
}
|
||||
|
||||
DataInfo dataInfno;
|
||||
double* findDefectData = Aurora::malloc(valid.getDataSize());
|
||||
float* findDefectData = Aurora::malloc(valid.getDataSize());
|
||||
int findDefectDataIndex = 0;
|
||||
for(int i=0; i<valid.getDataSize(); ++i)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user