67 std::complex<float> ToComplex()
68 {
return std::polar(m_amplitude, m_phase); }
122 if( (
wmag ==
nullptr) || (wang ==
nullptr) )
124 LogError(
"Null input supplied to SParameterVector::ConvertFromWaveforms\n");
128 size_t len = std::min(
wmag->size(), wang->size());
130 m_points.PrepareForCpuAccess();
132 float ascale =
M_PI / 180;
133 for(
size_t i=0;
i<len;
i++)
138 wang->m_samples[
i] * ascale);
141 m_points.MarkModifiedFromCpu();
153 if( (
wmag ==
nullptr) || (wang ==
nullptr) )
155 LogError(
"Null input supplied to SParameterVector::ZeroFromWaveforms\n");
159 size_t len = std::min(
wmag->size(), wang->size());
161 m_points.PrepareForCpuAccess();
163 for(
size_t i=0;
i<len;
i++)
166 m_points.MarkModifiedFromCpu();
172 float InterpolateMagnitude(
float frequency)
const;
173 float InterpolateAngle(
float frequency)
const;
177 void resize(
size_t nsize)
178 { m_points.resize(
nsize); }
183 {
return m_points.size(); }
186 {
return m_points[
i]; }
189 { m_points.clear(); }
195typedef std::pair<int, int> SPair;
207 void Allocate(
int nports = 2);
210 {
return m_params.empty(); }
219 {
return *m_params[pair]; }
222 {
return *(m_params.find(pair)->second); }
238 FORMAT_REAL_IMAGINARY
241 void SaveToFile(
const std::string& path, ParameterFormat format = FORMAT_MAG_ANGLE, FreqUnit
freqUnit = FREQ_GHZ);
243 size_t GetNumPorts()
const
247 std::map< SPair , SParameterVector*> m_params;
Definition AcceleratorBuffer.h:204
void resize(size_t size, bool exactSize=false)
Change the usable size of the container.
Definition AcceleratorBuffer.h:679
A single point in an S-parameter dataset.
Definition SParameters.h:44
A single S-parameter array.
Definition SParameters.h:75
float InterpolatePhase(float phase_lo, float phase_hi, float frac) const
Interpolates a phase angle, wrapping appropriately.
Definition SParameters.cpp:172
__attribute__((noinline)) void ConvertFromWaveforms(const T *wmag
Loads the vector from a pair of waveforms in mag/angle format.
SParameterVector(const WaveformBase *wmag, const WaveformBase *wang)
Creates an S-parameter vector from analog waveforms in dB / degree format.
Definition SParameters.h:83
__attribute__((noinline)) void ZeroFromWaveforms(const T *wmag
Similar to ConvertFromWaveforms() but sets mag/angle values to zero indicating "no data".
void ConvertToWaveforms(SparseAnalogWaveform *wmag, SparseAnalogWaveform *wang)
Copy our state to analog mag/angle waveforms.
Definition SParameters.cpp:46
SParameterVector(const SparseAnalogWaveform *wmag, const SparseAnalogWaveform *wang)
Creates an S-parameter vector from analog waveforms in dB / degree format.
Definition SParameters.h:100
float GetGroupDelay(size_t bin) const
Gets the group delay at a given bin.
Definition SParameters.cpp:206
SParameterVector(const UniformAnalogWaveform *wmag, const UniformAnalogWaveform *wang)
Creates an S-parameter vector from analog waveforms in dB / degree format.
Definition SParameters.h:108
A set of S-parameters.
Definition SParameters.h:201
SParameterPoint SamplePoint(int to, int from, float frequency)
Sample a single point from a single S-parameter.
Definition SParameters.h:215
void Clear()
Clears out current S-parameters before reloading them.
Definition SParameters.cpp:236
void SaveToFile(const std::string &path, ParameterFormat format=FORMAT_MAG_ANGLE, FreqUnit freqUnit=FREQ_GHZ)
Serializes a S-parameter model to a Touchstone file.
Definition SParameters.cpp:264
Touchstone (SxP) file parser.
Definition TouchstoneParser.h:45
int64_t GetOffsetScaled(T *wfm, size_t i)
Returns the offset of a sample from the start of the waveform, in X axis units.
Definition Waveform.h:841