Hello @Peter19
I escalated this issue to our SE team and got a method as follows. Please refer to it. Sorry for the inconvenience caused to you.
please refer to SDK example:
static void arm_mat_scale_q31Test(void)
{
uint32_t srcRows, srcColumns; /* Temporary variables */
arm_matrix_instance_q31 scaleMatrix;
arm_matrix_instance_q31 scaleMatrixR;
float floatInput;
float floatScaler = 0.5f;
q31_t scaler = FLOAT_2_Q31(floatScaler);
q31_t scale[MATRIX_LEN];
q31_t scaleResult[MATRIX_LEN] = {0};
q31_t scaleRel[MATRIX_LEN] = {0};
for (uint32_t i = 0; i < MATRIX_LEN; i++)
{
floatInput = (float)i / (float)MATRIX_LEN;
scale[i] = FLOAT_2_Q31(floatInput);
scaleRel[i] = FLOAT_2_Q31(floatInput * floatScaler);
}
/* Initialise Matrix Instance scaleMatrix with numRows, numCols and data array(scale) */
srcRows = MATRIX_ROW;
srcColumns = MATRIX_COL;
arm_mat_init_q31(&scaleMatrix, srcRows, srcColumns, scale);
uint32_t oldTime = TEST_GetTime();
for (uint32_t i = 0; i < MATRIX_TEST_LOOP; i++)
{
arm_mat_init_q31(&scaleMatrixR, srcRows, srcColumns, scaleResult);
arm_mat_scale_q31(&scaleMatrix, scaler, 0, &scaleMatrixR);
}
PRINTF("%s: %d ms\r\n", __func__, TEST_GetTime() - oldTime);
for (uint32_t i = 0; i < ARRAY_SIZE(scale); i++)
{
EXAMPLE_ASSERT_TRUE(scaleRel[i] == scaleMatrixR.pData[i]);
}
}
BR
Alice