feat: Remove temperature dependensy.

This commit is contained in:
sunwen
2025-03-14 15:28:18 +08:00
parent 577294088b
commit 3db427dc6b
18 changed files with 321 additions and 332 deletions

View File

@@ -6,6 +6,7 @@
#include "Function.h"
#include "Function2D.h"
#include "Matrix.h"
#include "Parser.h"
#include "Data/MetaData.h"
#include "Data/MovementData.h"
@@ -16,6 +17,7 @@
#include "ceMatchedFilterHandling.h"
#include "ShotList/ShotList.h"
#include "config/config.h"
#include "temperatureCalculation/estimateSOSWater.h"
using namespace Recon;
@@ -148,110 +150,10 @@ Matrix Recon::temperatureToSoundSpeed(const Matrix& aTemperature, const std::str
}
//已验证,完全正确
TempInfo Recon::getTemperatureInfo(Parser* aParser, float aNumTas)
TempInfo Recon::getTemperatureInfo(Parser* aParser, const CEInfo& aCEInfo)
{
TempInfo result;
//jumoTemp
JumoTemperaturePointer jumoTemp1 = aParser->getTemperatureData().getJumoTemperature1();
JumoTemperaturePointer jumoTemp2 = aParser->getTemperatureData().getJumoTemperature1();
JumoTemperaturePointer jumoTemp3 = aParser->getTemperatureData().getJumoTemperature1();
JumoTemperaturePointer jumoTemp4 = aParser->getTemperatureData().getJumoTemperature1();
int jumoTempNum = jumoTemp1.getLength();
if(jumoTemp2.getLength() < jumoTempNum)
{
jumoTempNum = jumoTemp2.getLength();
}
if(jumoTemp3.getLength() < jumoTempNum)
{
jumoTempNum = jumoTemp3.getLength();
}
if(jumoTemp4.getLength() < jumoTempNum)
{
jumoTempNum = jumoTemp4.getLength();
}
float* jumoTempData = Aurora::malloc(jumoTempNum * 4);
for(int i=0; i<jumoTempNum; ++i)
{
jumoTempData[4*i] = jumoTemp1.get()[i];
jumoTempData[4*i + 1] = jumoTemp2.get()[i];
jumoTempData[4*i + 2] = jumoTemp3.get()[i];
jumoTempData[4*i + 3] = jumoTemp4.get()[i];
}
result.jumoTemp = Aurora::Matrix::New(jumoTempData, 4, jumoTempNum);//输出
bool tasTempUsed = false;
//Tas Temperature
if(reconParams::useTASTempComp)
{
//todo TemperatureModel4D字段不存在
// try
// % load temp from files.tempTASComp (standard file, including the preprocessed/corrected temperature data)
// % and extract infos, TemperatureModel4D and TASTemperature
// TASTemp = loadTASTemperaturesProcessed(path, files.tempTASComp);
// % extract TemperatureModel4D
// if isfield(TASTemp, 'TemperatureModel4D')
// temp.TemperatureModel4D = TASTemp.TemperatureModel4D;
// end
// % extract TASTemperatures
// temp.TASTemperature = TASTemp.TASTemperature;
// catch
// tasTempCompUsed = 0;
// end
}
if (!tasTempUsed)
{
size_t tasTempLength = aParser->getTemperatureData().getTasTemperature()[0].getLength();
float* fromTasTempData = aParser->getTemperatureData().getTasTemperature()[0].get();
float* tasTempData = new float[tasTempLength];
std::copy(fromTasTempData, fromTasTempData+ tasTempLength, tasTempData);
Matrix tasTemp = Matrix::fromRawData(tasTempData, 2, tasTempLength / 2);
if (!reconParams::correctTASTemp || result.jumoTemp.isNan())
{
result.tasTemperature = tasTemp;
}
else
{
//todo JumoTemp都没有值
// temp.TASTemperature(1, :, :) = correctTASTemperatures(temp2, temp.jumoTemp);
// catch ME
// % if tas temperatures not there
// % take temperatures from calibrated sensors
// % and use them for all TAS the same
// writeReconstructionLog(sprintf('%s: %s TAS temperatures approximated from calibrated reference sensors.', ME.identifier, ME.message), 3)
// if(~jumoAllNaN)
// temp.TASTemperature = zeros(2, numTAS, size(temp.jumoTemp, 2));
// temp.TASTemperature(1, :, :) = repmat(mean(temp.jumoTemp), size(temp.TASTemperature, 2), 1);
// temp.TASTemperature(2, :, :) = repmat([1:size(temp.TASTemperature, 2)]', 1, size(temp.TASTemperature, 3));
// else % worst case: no temperature data at all! cannot continue!
// error([mfilename ':noTemperatureAvailable'],'No TAS and no Jumo temperature available! Cannot reconstruct!');
// end
// end
}
}
if (result.jumoTemp.isNan())
{
result.expectedTemp = mean(result.tasTemperature(0,$,$).toMatrix(),FunctionDirection::Column,false);
result.jumoTemp = result.expectedTemp;
}
else
{
result.expectedTemp = mean(result.jumoTemp,FunctionDirection::All,false);
}
result.expectedSOSWater = temperatureToSoundSpeed(result.expectedTemp , "marczak");
result.expectedSOSWater = estimateSOSWater(aParser,aCEInfo);
return result;
}