繁体   English   中英

将 1d 阵列分配到 2d 矩阵中,用于 FMCW 雷达中的距离和速度信息

[英]Assignment of 1d array into 2d matrix for range and speed information in FMCW radar

我正在使用 fmcw 雷达使用 stm32l476 micro controller 查找移动 object 的距离和速度信息。

首先,为了获得文具 object 的范围,我将 ADC 值存储在“fft_in”数组中并使用 fft 计算范围。 现在我需要将这个 ADC 值的 1d 数组存储在 2d 数组中,以计算跨啁啾指数的多普勒频率。

下面是将 adc 值复制到 fft_in 数组的代码:

while (1)
  {
      if (is_data_ready_for_fft == 1) {
                        for (size_t i = 0; i < ADC_BUF_LENGTH; i++) {
                            fft_in[i] = (float32_t) adcResultsDMA[i];
                        }
                        is_data_ready_for_fft = 0;
                     }
                  }

上面的代码将值复制到 fft_in 数组中。 这里 ADC_BUF_LENGTH = 512; 现在我的问题是如何将此 fft_in 缓冲区添加到矩阵中,如图所示:

[0,0]=fft_in(0)[0]   [0,1]=fft_in(0)[1]..............[0,512]=fft_in(0)[512]
[1,0]=fft_in(1)[0]   [1,1]=fft_in(1)[1]..............[1,512]=fft_in(1)[512]
[2,0]=fft_in(2)[0]   [2,1]=fft_in(2)[1]..............[2,512]=fft_in(2)[512]
.
.
.
.
[19,0]=fft_in(19)[0]  [19,1]=fft_in(19)[1].............[19,512]=fft_in(19)[512]

(啁啾指数我取为 20,样本数为 512。所以跨行的 fft 产生范围,跨列的 fft 产生速度)

我认为您正在寻找一个二维数组。 你可以像这样声明一个float32_t fftIn2D[NBR_CHIRPS_PER_FRAME][NBR_SAMPLES_PER_CHIRP]; . NBR_SAMPLES_PER_CHIRP是您在一个啁啾期间放置采样值的列(在您的情况下为 512 个样本)。 NBR_CHIRPS_PER_FRAME是一帧中啁啾声的行数,在您的情况下为 20。

要访问数组的元素,您需要两个嵌套的 for 循环。 这是用于此目的的代码片段。

for (uint32_t chirpIdx = 0; chirpIdx < NBR_CHIRPS_PER_FRAME; chirpIdx++)
{
    for (uint32_t sampleIdx = 0; sampleIdx < NBR_SAMPLES_PER_CHIRP; sampleIdx++)
    {
        /*acess the element*/
        fftIn2D[chirpIdx][sampleIdx] = (float32_t) adcResultsDMA[i]
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM