CIR magnitudes comparison of datasets


Hello every one I was collecting some data and I was comparing the data with another dataset using Decawave DWm1001, I was comparing the results for the CIR the index between 650-950but as you can see that there is a huge difference between the magnitudes, and both are collected in the LOS condition, do you think that this is weired or normal ,I will be thankful if you please help me with that, Here I attached how I red the CIR data:

void
get_absolute_cir(int32_t *a_out,int32_t *b_out )
{
uint16_t chunk_len = 0;

uint16_t acc_len_bytes = 1016*4;

int32_t a = 0; /* Real part /
int32_t b = 0; /
Imaginary part */

uint16_t cir_sample_counter = 0;
uint16_t max_bytes = ((0 + 1015) * 4 < acc_len_bytes) ? ((0 + 1015) * 4) : acc_len_bytes;

for(uint16_t j = 0 * 4; j < max_bytes; j = j + ACC_READ_STEP) {
/* Select the number of bytes to read from the accummulator */
chunk_len = ACC_READ_STEP;
if (j + ACC_READ_STEP > max_bytes) {
chunk_len = max_bytes - j;
}
//printf(“%s:%u dwt_readaccdata chunc_len %u \n”,FUNCTION,LINE,chunk_len);
dwt_readaccdata(acc, chunk_len + 1, j);

/* Store the bytes read as complex numbers */
/* Ignore dummy octet by starting with k=1 */
for(int k = 1; k < chunk_len + 1; k = k + 4) {
  a = (int32_t) (int16_t) (((acc[k + 1] & 0x00FF) << 8) | (acc[k] & 0x00FF));
  b = (int32_t) (int16_t) (((acc[k + 3] & 0x00FF) << 8) | (acc[k + 2] & 0x00FF));

  
  a_out[cir_sample_counter] = a;
  b_out[cir_sample_counter] = b;

  //  printf("CIR cnt %u val %d\n",cir_sample_counter, (int) abs_val);
  cir_sample_counter++;
}

}
}

Were both data sets collected with the same RF settings (channel, power, preamble, prf etc…) at the same range and with the antennas in the exact same orientation / environment (same pcbs in the same locations)?

Thank you for replying, it is not in the same location, different PCBS, the problem is that I could not find that what is the normal amplitude for CIR, I have to also mention that these figures indicate a^2+b^2 which a and b refers to real and imaginary parts, respectively

You have two different boards in two different locations.
Why would you expect the same results?

There is no normal CIR amplitude. It depends on the environment.

Thank you indeed for responding and clarifying, is there any approaches to validate the collected CIR, I mean for example calculating the first path amplitude, using CIR data and then compare it with the one which is in the register, I will be thankful if there is any way to validate the CIR, the shape looks good but I feel the one I collected the peaks are higher.

Hello, Normally if you retrieve the index and the amplitude of the peak path from the dwt_cirdiags_t structure, you should be able to verify that the index in the CIR corresponds to the peak path and you can compute its amplitude.
Values should match.