67 std::complex<float> ToComplex()
68 {
return std::polar(m_amplitude, m_phase); }
92 ConvertFromWaveforms(umag, uang);
94 ConvertFromWaveforms(smag, sang);
102 ConvertFromWaveforms(wmag, wang);
110 ConvertFromWaveforms(wmag, wang);
120 void ConvertFromWaveforms(
const T* wmag,
const T* wang)
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());
132 float ascale = M_PI / 180;
133 for(
size_t i=0; i<len; i++)
137 pow(10, wmag->m_samples[i] / 20),
138 wang->m_samples[i] * ascale);
151 void ZeroFromWaveforms(
const T* wmag,
const T* wang)
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());
163 for(
size_t i=0; i<len; i++)
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(); }
216 {
return m_params[ SPair(to, from) ]->InterpolatePoint(frequency); }
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;
void MarkModifiedFromCpu()
Marks the CPU-side copy of the buffer as modified.
Definition: AcceleratorBuffer.h:852
void PrepareForCpuAccess()
Prepares the buffer to be accessed from the CPU.
Definition: AcceleratorBuffer.h:877
void resize(size_t size)
Change the usable size of the container.
Definition: AcceleratorBuffer.h:457
void clear()
Resize the container to be empty (but don't free memory)
Definition: AcceleratorBuffer.h:478
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:702