任意形状多元阵的远场指向性仿真

任意形状多元阵的远场指向性仿真 需提供阵元坐标 默认第一个阵元作为参考阵元 以下还是以线阵做例子
1 模拟远距离点源球面波辐射 仿真出各阵元接收信号
2 可设置阵有任意预定方向的指向性 后求出各角度响应 做出指向性图
想用哪个部分 可自行提取
有个小插曲,图方便一个for里做两件事,生成与接收,但应该将这两个过程分开,更符合实际情况。其实也没啥区别,无非就多开个矩阵先存着。按理说一开始预设好波束形成方向后在这一次仿真中就不再变化,而我写在一个for中,误将波束形成方向也随角度变了,像仿真阵元接收的时候一样,所得指向性函数当然是近似平的。。。
clear all;clc;close all;
c=1500;%声速
fs=20000;%采样率
t=0:1/fs:1-1/fs;

% P=[0 0 0;1 0 0;2 0 0;3 0 0;4 0 0;5 0 0;6 0 0;7 0 0;8 0 0;9 0 0;];%阵位置
P=zeros(20,3);
for i=1:20
P(i,1)=0.5*i;
end

N=length(P(:,1));%个数
Q1=P(1,:);%参考水听器
s=zeros(length(t),N);%每通道一列

f=1000;%信号频率
w=f2pi;%角频率
lamda=c/f;%波长
k=w/c;%波数
g0=(N-1)2/cfs;%最大偏移量
g0=ceil(g0);%向上取整

theta=1:180;
summ=zeros(length(s)-2*g0+1,length(theta));
summ1=zeros(1,length(theta));

dtheta=20;
% dtheta=10/180*pi;%阵偏移角度

%1 模拟远距离点源球面波辐射 仿真出接收信号
%2 求出各角度响应 做出指向性图

for i=1:length(theta) %1~180 正前方90度
   Q2=[cos(theta(i)/180*pi) sin(theta(i)/180*pi) 0];%角度 向量
    for n=1:N
        phi=-norm(1000000*Q2-P(n,:))*k;%phi=-kx
        s(:,n)=exp(1j*(w*t+phi));
   	end
      
   summ(:,i)=s(g0:length(t)-g0,1);
    dQ=[sin(dtheta/180*pi) cos(dtheta/180*pi) 0];%偏转角度 向量
    for n=2:N
        
        dd=dot(dQ,P(n,:)-Q1);
        %声线方向投影 得至参考水听器的距离
        g=round(dd/c*fs);%dd>0为在前 需延时
        
        summ(:,i)=summ(:,i)+s(g0+g:length(t)-g0+g,n);%正方向时要延时 加上对于延时
    end
    
    summ1(i)=summ(:,i)'*summ(:,i);

	end

% summ1=summ1/max(summ1);%归一化
figure
plot(theta,summ1);
figure
plot(theta,log10(summ1/0.1));
figure
polarplot(theta/180*pi,log10(summ1/0.1)-min(log10(summ1/0.1)));

你可能感兴趣的:(声学)