Triangle
Generates a triangle wave.
The formulas are as follows:
Real number: x[n] = magn * cth(2π* rFreq*n + phase), n = 0, 1, 2, ...
Complex number: x[n] = magn * [cth(2π* rFreq*n + phase) + j * sth(2π* rFreq*n + phase)], n = 0, 1, 2, ...
The function interface is declared as follows:
- Operations on integers:
HmppResult HMPPS_Triangle_16s(int16_t *dst, int32_t len, int16_t magn, float freq, float sym, float *phase);
HmppResult HMPPS_Triangle_16sc(Hmpp16sc *dst, int32_t len, int16_t magn, float freq, float sym, float *phase);
- Operations on floating-point numbers:
HmppResult HMPPS_Triangle_32f(float *dst, int32_t len, float magn, float freq, float sym, float *phase);
HmppResult HMPPS_Triangle_64f(double *dst, int32_t len, double magn, double freq, double sym, double *phase);
HmppResult HMPPS_Triangle_32fc(Hmpp32fc *dst, int32_t len, float magn, float freq, float sym, float *phase);
HmppResult HMPPS_Triangle_64fc(Hmpp64fc *dst, int32_t len, double magn, double freq, double sym, double *phase);
Parameters
Parameter |
Description |
Value Range |
Input/Output |
|---|---|---|---|
dst |
Pointer to the destination vector |
The value cannot be NULL. |
Output |
len |
Vector length |
(0, INT_MAX] |
Input |
phase |
Pointer to the phase |
[0.0, 2π) |
Input |
magn |
Amplitude |
Depending on the data type |
Input |
freq |
Frequency |
[0.0, 0.5) |
Input |
sym |
Symmetry |
(-π, π) |
Input |
Return Value
- Success: HMPP_STS_NO_ERR
- Failure: An error code is returned.
Error Codes
Error Code |
Description |
|---|---|
HMPP_STS_NULL_PTR_ERR |
The value of dst is NULL. |
HMPP_STS_SIZE_ERR |
The value of len is less than or equal to 0. |
HMPP_STS_PARAMETER_ERR |
The magnitude is less than 0, and the frequency or phase is out of range. |
Example
#define BUFFER_SIZE_T 10
int main()
{
int16_t dst[BUFFER_SIZE_T];
int32_t i;
int16_t magn = 25;
float freq = 0.4;
float phase = 5.1415901;
float sym = 1.3;
HmppResult result = HMPPS_Triangle_16s(dst, BUFFER_SIZE_T, magn, freq, sym, &phase);
printf("result = %d \ndst =", result);
for (i = 0; i < BUFFER_SIZE_T; i++) {
printf(" %d ", dst[i]);
}
return 0;
}
Output:
result = 0 dst = -5 9 -18 23 -4 -5 9 -18 23 -4