我目前正在尝试了解延迟和求和波束成形的工作原理。我发现这个网站很好地解释了这种技术的过程,其中提供了以下 C 代码:
#include <stdio.h>
#include <math.h>
#define ANGLE_RESOLUTION 500 // Number of angle points to calculate
int main(void)
{
int numElements = 4; // Number of array elements
double spacing = 0.2; // Element separation in metres
double freq = 1000.0; // Signal frequency in Hz
double speedSound = 343.0; // m/s
int a;
int i;
// Iterate through arrival angle points
for (a=0 ; a<ANGLE_RESOLUTION ; a++)
{
// Calculate the planewave arrival angle
double angle = -90 + 180.0 * a / (ANGLE_RESOLUTION-1);
double angleRad = M_PI * (double) angle / 180;
double realSum = 0;
double imagSum = 0;
// Iterate through array elements
for (i=0 ; i<numElements ; i++)
{
// Calculate element position and wavefront delay
double position = i * spacing;
double delay = position * sin(angleRad) / speedSound;
// Add Wave
realSum += cos(2.0 * M_PI * freq * delay);
imagSum += sin(2.0 * M_PI * freq * delay);
}
double output = sqrt(realSum * realSum + imagSum * imagSum) / numElements;
double logOutput = 20 * log10(output);
if (logOutput < -50) logOutput = -50;
printf("%d %f %f %f %f\n", a, angle, angleRad, output, logOutput);
}
return 0;
}
波束成形通过转向我们想要收听的方向来工作。由于上面的代码计算了 -90 到 90 度的延迟,我认为它正在转向来自 -90 到 90 度的声波。
但是当一直到同一个网站时,它说“到目前为止,阵列灵敏度模式的主瓣已经固定在一个方向;垂直于阵列。”
从那句话中,我推断出上面的 C 代码根本没有转向?如果没有,我该如何实施?