使用matlab,实现阵列单元个数 M=5,单元间距 5 cm,期望声源方向为 endfire 方向(对 应 θc=90o),编程绘制DI和WNG两幅图,计算的频率范围为 200 - 4000 Hz,频率间隔 10 Hz。给出代码。仔细考虑列阵流行矩阵部分
时间: 2023-06-26 12:05:52 浏览: 196
以下是MATLAB代码:
```matlab
% 阵列参数
M = 5; % 单元个数
d = 5e-2; % 单元间距
% 频率范围和频率间隔
f = 200:10:4000; % Hz
% 波长
c = 343; % m/s,声速
lambda = c./f; % m,波长
% 阵列流行矩阵
theta_c = 90; % 期望声源方向,单位:度
theta_c = deg2rad(theta_c); % 转换为弧度制
A = exp(-1j*2*pi*d/lambda.'*(0:M-1)*sin(theta_c));
% 权重系数
w = ones(M,1);
% DI和WNG
DI = zeros(size(f));
WNG = zeros(size(f));
for i = 1:length(f)
% DI
a = abs(A(i,:)*w);
DI(i) = (M*a(1))^2/(sum(a.^2)-a(1)^2);
% WNG
WNG(i) = sum(abs(w).^2)/M;
end
% 绘图
figure;
plot(f,10*log10(DI),'LineWidth',2);
xlabel('频率 (Hz)');
ylabel('方向图幅值 (dB)');
title('阵列方向图(DI)');
grid on;
figure;
plot(f,10*log10(WNG),'LineWidth',2);
xlabel('频率 (Hz)');
ylabel('归一化权重和 (dB)');
title('阵列归一化权重和(WNG)');
grid on;
```
其中,阵列流行矩阵的计算是代码的重点部分。我们使用了矩阵运算,以便同时计算多个频率点的矩阵值。
对于每个频率点,我们都计算了方向图的 DI 和归一化权重和 WNG。最后,我们绘制了这两个参数随频率变化的图像。
注意,我们使用了 MATLAB 内置函数 `deg2rad` 将角度转换为弧度。此外,我们使用了 `sum` 函数和 `.` 运算符来实现矩阵的逐元素运算。
阅读全文