Пространственный БПФ 32 точки в Матлаб

Пространственный БПФ 32 точкиТема БПФ уже подымалась на нашем ресурсе в комплекте с кодом FFT VHDL. Данный пост это продолжение поднятой темы только в виде Матлаб кода пространственного БПФ на 32 точки. Если мысленно представить антенную линейку на 32 элемента на которую поступает плоская волна то на ее базе вполне возможно сформировать веер лучей используя так называемый пространственный БПФ на 32 точки. Доказательством данного утверждения служит Матлаб модель пространственного БПФ приведенная ниже.


%% инициализация

clc; 
clear all;
  
% центральная частота Гц
f = 90000;          
% частота дискретизации Гц
fs = 360000;        
% коэффициент децимации
td = 1;             
% амплитуда сигнала 
A = 1;            
% период одного дискрета
ts = 1/fs;          
% количество проходов участка моделирования 
tm = 200;            
% круговая частота
w=2*pi*f;           
% начальное время (начальная фаза)
tmin = 0;           
% конечное время
tmax = tm*ts;       
% один минимальный шаг смещения
offset = 2*pi/32;   
% множитель миним. шага смещения
step = -5;   
% вариант коэффициентов КИХ фильтра 
vf = 3;   

% матрица коэффициентов 51 коэффициент (окно Чебышева 85-95 кГц)
kf1 = [0 116 0 -214 0 354 0 -540 0 772 0 -1042 0 1339 0 -1645 0 1939 ...
      0 -2199 0 2403 0 -2533 0 2577 0 -2533 0 2403 0 -2199 0 1939 ...
      0 -1645 0 1339 0 -1042 0 772 0 -540 0 354 0 -214 0 116 0];
    
% матрица коэффициентов 51 коэффициент (окно Хеминга 85-95 кГц)
kf2 = [0,95,0,-151,0,260,0,-431,0,666,0,-958,0,1292,0,-1644,0,1988, ...
        0,-2295,0,2537,0,-2692,0,2746,0,-2692,0,2537,0,-2295,0,1988, ...
				0,-1644,0,1292,0,-958,0,666,0,-431,0,260,0,-151,0,95,0];

% матрица коэффициентов 51 коэффициент (Equiripple 75-85-95-105 кГц)
kf3 = [0,-834,0,283,0,-202,0,8,0,307,0,-738,0,1260,0,-1836,0,2417, ...
        0,-2947,0,3372,0,-3647,0,3742,0,-3647,0,3372,0,-2947,0, ...   
				2417,0,-1836,0,1260,0,-738,0,307,0,8,0,-202,0,283,0,-834,0];

if vf == 1
  kf = kf1;
elseif vf == 2  
  kf = kf2;
elseif vf == 3  
  kf = kf3;
end 

% количество коэффициентов
lkf =length(kf);    
% матрица времени 
t = linspace(tmin, tmin+tmax, fs*tmax+1);
% матрица сигналов (32 сигнала со смещ. step*offset*toff-offset)
xs = zeros(32,201);
for toff = 1:32
  xs(toff,:) = round(A*sin(w*t + step*offset*toff-offset));
  xs(toff,1:80) = 0;
  xs(toff, 140:201) = 0;
end

%% моделирование

zs = zeros(32,lkf);
zr = zeros(32,200);
zrf = zeros(32,200);
Xf = zeros(32,200);

for tm_mod = 1:td:tm

  for tf = 1:32
    % поэлементное умножение
    if tm_mod < 150  
      zs = xs(tf,tm_mod/td:(tm_mod/td+50)).*kf;
    end	
    % матрица выходных данных КИХ 90 кГц 32 канала
    zr(tf, tm_mod/td) = round(sum(zs))*0.0001;
  end
  
  if tm_mod > td
    zrf(:,tm_mod-1) = 1i*zr(:,tm_mod-1) + zr(:,tm_mod);
    % fft complex 32 точки от двух соседних столбцов 
    Xf(:,tm_mod-1) = fft(zrf(:,tm_mod-1), 32);
  end
  
end

% fft 32 точки от двух соседних столбцов
z = sqrt((real(Xf)).^2+(imag(Xf)).^2);
% координаты x y 
x = zeros(32,200);
y = zeros(32,200);
for tm_mod = 1:1:32
  x(tm_mod,:) = tm_mod;
end  
for tm_mod = 1:1:tm
  y(:,tm_mod) = tm_mod;
end  

%% графика

% выборки по сигналу xs
figure(1)
plot(xs(1,:), 'r');
hold on
stem(xs(1,:));
title('Дискретный сигнал'),

% графика элементов массива zr
figure(2)
plot(zr(1,:), 'r'), grid;
hold on
stem(zr(1,:));
title('Дискретный сигнал после КИХ фильтра'),

if step >= 0
  nl = abs(step)+1;
else
  nl = 32-abs(step)+1;
end  

figure(3)
plot(z(nl,:), 'r'), grid;
hold on
stem(z(nl,:));
title('Пространственный БПФ луч nl'),

figure(4)
plot3(x, y, z), grid; 
title('БПФ 32 точки'),
xlabel('Номер выхода БПФ'), ylabel('Дискретное время(выборки)'), zlabel('Амплитуда')


Допустим имеется антенна-линейка 32 элемента на которую приходит синусоидальный сигнал частотой 90 кГц и длительностью порядка 500 мкс. Сигнал приходит в виде плоской волны на все элементы антенны с задержкой на каждый последующий элемент начиная с одного из крайних.

Если производить дискретизацию данного сигнала с частотой в 4 раза выше его собственной частоты - 360 кГц, то фазовая задержка между двумя соседними дискретами или выборками будет равна 90°. Такая дискретизация даст возможность использовать две соседние выборки как две части комплексной составляющей входа БПФ. Почему? Чтобы не вдаваться в длинные пояснения по поводу формирования квадратурных составляющих и связанную с ними комплексную экспоненту вспомним, что квадратурные составляющие синусоидального сигнала  легко можно получить задержав собственно сигнал относительно исходного по фазе на 90°. Исходный сигнал и задержанный и будут представлять собой составляющие комплексного сигнала который можно подавать на обработку БПФ. Две соседние выборки следующие через 90° это и есть в каждый отдельный дискретный момент времени квадратурные составляющие сигнала. Нужно учесть тот факт, что такое утверждение справедливо только для синусоидального или гармонического сигнала. Иначе на придется иметь дело с пресловутой комплексной экспонентой. А это уже совсем другая история.  

Итак, возвращаясь к Матлаб коду. Все достаточно просто. Формируется матрица из 32_х дискретных сигналов xs в которой имеется возможность формировать задержку каждого последующего сигнала относительно предыдущего начиная с одного из крайних. Вид одного из дискретных сигналов на картинке ниже.

Дискретный сигнал

Задержка определяется переменной step, которая может принимать значения 0, положительные и отрицательные но не больше 15 по абсолютному значению. С помощью данной задержки моделируется плоская волна приходящая под разным углом на антенную линейку. Минимальный шаг задержки равен 2*pi/32.

Далее все 32 сигнала пропускаются через фильтр. Кстати в коде представлены 3 варианта коэффициентов КИХ фильтра которые выбираются переменной vf.

КИХ фильтр

Теперь полученные 32 сигнала можно подавать на так называемый пространственный БПФ. Почему пространственный? БПФ выдаст на выходе спектр сигнала с пространственной частотой которая формируется на входах БПФ в результате задержек прихода сигнала на каждй последующий вход начиная с одного из крайних. Кстати сказать если step принять равной 0 то пространственная частота будет равна 0. Все 32 сигнала будут приходить на входы БПФ в фазе. На БПФ будет всплеск на первом выходе.

Пространственная частота равна нулю

При введении задержки, например step = 5 картина существенно меняется. Появляется всплеск сигнала на другом выходе БПФ.

Пространственный БПФ

Полезно обратить внимание на небольшие всплески в спектре пространственной частоты на других выходах БПФ. При проектировании диаграммно-формирующего ДФУ устройства на базе пространственного БПФ эти всплески будут представлять собой боковые лепестки ХН.

Top.Mail.Ru