45 std::unique_ptr<RadarSignal> loadWaveformFromHdf5File(
const std::string& name,
46 const std::filesystem::path& filepath,
const RealType power,
49 std::vector<ComplexType> data;
52 auto signal = std::make_unique<Signal>();
54 return std::make_unique<RadarSignal>(name, power, carrierFreq,
68 std::unique_ptr<RadarSignal> loadWaveformFromCsvFile(
const std::string& name,
const std::filesystem::path& filepath,
71 std::ifstream ifile(filepath);
75 throw std::runtime_error(
"Could not open file '" + filepath.string() +
"' to read waveform");
79 ifile >> rlength >>
rate;
81 const auto length =
static_cast<std::size_t
>(rlength);
82 std::vector<ComplexType> data(length);
85 for (std::size_t done = 0; done < length && ifile >> data[done]; ++done)
89 if (ifile.fail() || data.size() != length)
92 throw std::runtime_error(
"Could not read full waveform from file '" + filepath.string() +
"'");
95 auto signal = std::make_unique<Signal>();
96 signal->load(data, length, rate);
97 return std::make_unique<RadarSignal>(name, power, carrierFreq, rlength / rate, std::move(signal));
107 constexpr bool hasExtension(
const std::string_view filename,
const std::string_view ext)
noexcept
109 return filename.ends_with(ext);
118 const std::filesystem::path filepath = filename;
119 const auto extension = filepath.extension().string();
121 if (hasExtension(extension,
".csv"))
123 auto wave = loadWaveformFromCsvFile(name, filepath, power, carrierFreq);
124 wave->setFilename(filename);
127 if (hasExtension(extension,
".h5"))
129 auto wave = loadWaveformFromHdf5File(name, filepath, power, carrierFreq);
130 wave->setFilename(filename);
135 throw std::runtime_error(
"Unrecognized file extension '" + extension +
"' for file: " + filename);
Class representing a radar signal with associated properties.
Class for handling radar waveform signal data.
Global configuration file for the project.
double RealType
Type for real numbers.
Header file for HDF5 data export and import functions.
@ FATAL
Fatal level for severe error events.
RealType rate() noexcept
Get the rendering sample rate.
std::unique_ptr< RadarSignal > loadWaveformFromFile(const std::string &name, const std::string &filename, const RealType power, const RealType carrierFreq)
Loads a radar waveform from a file and returns a RadarSignal object.
void readPulseData(const std::string &name, std::vector< ComplexType > &data)
Reads pulse data from an HDF5 file.
Defines the Parameters struct and provides methods for managing simulation parameters.
Classes for handling radar waveforms and signals.