Частота и время отклика фильтра

Я должен реализовать наименьших квадратов частот инвариантную для формирователя луча массива 8 громкоговорителя 14.5cm разнесением друг от друга от 1 кГц до 8 кГц, чтобы достичь максимального лепестка в направлении 6 градусов и остановки лепестка при -6 градусов с нулевой шириной около 9 градусов. с Matlab и справочной документа я разработал этот Beamformer с этим кодом:

    %% inizializzazione variabili e definizione risoluzione di discretizzazione
teta=-90:90;   %angle in degrees
N=8;    %number of sensors
freq=1000:3:8000; %frequenze in hertz
M=length(teta);
P=length(freq);
c=3e08; %speedlight

%% parametri progettuali 
teta_target=6;
teta_stop=-6;
null_width=9;

%% inizializzazione dell'array e delle varie posizioni dei sensori rispetto al centro dell'array
sensor_spacing=14.5; %cm
d=sensor_spacing/2; %distance first sensors from the center of the array
sensor_pos=[-(N-1)*d,-(N-3)*d,-(N-5)*d,-(N-7)*d,(N-7)*d, (N-5)*d,(N-3)+d,(N-1)*d];

%% inizializzazione matrici per ottimizzazione
D=zeros(M,N);
G=zeros(M,N,P);
weights=zeros(N,P);

%% 
%%definizione matrice [dn*cos(teta/c)] propagation delay tau
for m=1:M
    for n=1:N
        D(m,n)=sensor_pos(n)*cos(teta(m)/c);
    end
end

%% 
%definizione matrice G
for j=1:P
    G(:,:,j)=exp(-1i*freq(j)*D);
end

%definizione di Gstop
G_stop=zeros(null_width,N,P);
teta_stop_index=find(teta==teta_stop);
flag=0;
%seleziono dalla matrice G le righe corrispondenti all'angolo di stop e a
%quelle adiacenti in base all'ampiezza del lobo di nullo definita in fase
%progettuale 
for i=1:(null_width+1)
        G_stop(i,:,:)=G(teta_stop_index-null_width+flag,:,:);
        flag=flag+1;
end


%% 
%definizione desiderate array response b_hat --> ovunque zero tranne che
%un impulso nell'indice che corrisponde all'angolo desiderato
b=zeros(M,1);
teta_target_index=find(teta==teta_target);

i=1;
shape=[0.2360,0.4719,0.7079,0.9900,1.0000,0.9900,0.7079,0.4719,0.2360];
for j=(teta_target_index-4):(teta_target_index+4)
    b(j)=shape(i);
    i=i+1;
end


%% 
%%optimization problems
for f = 1:P
    cvx_begin quiet
        variable wf(N) complex 
        minimize(norm(G(:,:,f)*wf - b, 2))
        subject to 
            norm(G_stop(:,:,f)*wf) <= 0.01;
    cvx_end
    weights(:,f)=wf;
end

Теперь у меня есть в окончательной переменной "веса"

  • 8 рядов (по одному на каждого динамика)
  • P столбцы (по одной на каждую частоту)

и каждая ячейка представляет собой сложный коэффициент. Как я могу построить частотную характеристику и временную характеристику этих фильтров, а также суммарную характеристику массива в полярной области, чтобы показать правильный угол?

0 ответов

Другие вопросы по тегам