Beamforming, достигнутые путем умножения входа датчика на комплексную экпоненту с соответствующей фазой, переключают, только запрашивает узкополосные сигналы. В случае широкополосного, или broadband, сигналы, держащийся вектор не является функцией одной частоты. Широкополосная обработка обычно используется в микрофоне и акустических приложениях.
Программное обеспечение Phased Array System Toolbox™ обеспечивает обычные и адаптивные широкополосные формирователи луча. Они включают:
Смотрите, что Акустический Beamforming Использует Массив Микрофона для примера использования широкополосного beamforming, чтобы извлечь речевые сигналы в шуме.
В этом примере показано, как выполнить широкополосную обычную задержку beamforming с массивом микрофона всенаправленных элементов. Создайте слуховой аппарат (волна давления) сигнал щебета. Сигнал щебета имеет пропускную способность 1 кГц и распространяет со скоростью 340 м/с на уровне земли.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
c = 340; t = linspace(0,1,50e3)'; sig = chirp(t,0,1,1000);
Соберите акустический щебет с ULA с десятью элементами. Используйте распределенные меньше элементов ненаправленного микрофона, чем половина длины волны в частоте дискретизации на 50 кГц. Щебет является инцидентом на ULA с углом азимут и вертикальное изменение. Добавьте случайный шум в сигнал.
microphone = phased.OmnidirectionalMicrophoneElement(... 'FrequencyRange',[20 20e3]); array = phased.ULA('Element',microphone,'NumElements',10,... 'ElementSpacing',0.01); collector = phased.WidebandCollector('Sensor',array,'SampleRate',5e4,... 'PropagationSpeed',c,'ModulatedInput',false); sigang = [60;0]; rsig = collector(sig,sigang); rsig = rsig + 0.1*randn(size(rsig));
Примените широкополосный обычный формирователь луча с временной задержкой, чтобы улучшить ОСШ полученного сигнала.
beamformer = phased.TimeDelayBeamformer('SensorArray',array,... 'SampleRate',5e4,'PropagationSpeed',c,'Direction',sigang); y = beamformer(rsig); subplot(2,1,1) plot(t(1:5000),real(rsig(1:5e3,5))) axis([0,t(5000),-0.5,1]) title('Signal (real part) at the 5th element of the ULA') subplot(2,1,2) plot(t(1:5000),real(y(1:5e3))) axis([0,t(5000),-0.5,1]) title('Signal (real part) with time-delay beamforming') xlabel('Seconds')
В этом примере показано, как построить ответ акустического элемента микрофона и массив элементов микрофона, чтобы подтвердить производительность формирователя луча. Массив должен обеспечить приемлемый шаблон массивов в пропускной способности.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
Создайте универсальную линейную матрицу (ULA) с 11 элементами микрофонов с помощью элементов антенны косинуса в качестве микрофонов. phased.CosineAntennaElement
Система object™ является достаточно общей, чтобы использоваться в качестве элемента микрофона также, потому что она создает или получает скалярное поле. Необходимо изменить частоты ответа в слышимую область значений. Кроме того, убедитесь PropagationSpeed
параметр в массиве pattern
методы установлены в скорость звука в воздухе.
c = 340; freq = [1000 2750]; fc = 2000; numels = 11; microphone = phased.CosineAntennaElement('FrequencyRange',freq); array = phased.ULA('NumElements',numels,... 'ElementSpacing',0.5*c/fc,'Element',microphone);
Постройте шаблон ответа элемента микрофона по набору частот.
plotFreq = linspace(min(freq),max(freq),15); pattern(microphone,plotFreq,[-180:180],0,'CoordinateSystem','rectangular',... 'PlotStyle','waterfall','Type','powerdb')
Этот график показывает, что шаблон элемента является постоянным по целой пропускной способности.
Постройте шаблон ответа массива с 11 элементами по тому же набору частот.
pattern(array,plotFreq,[-180:180],0,'CoordinateSystem','rectangular',... 'PlotStyle','waterfall','Type','powerdb','PropagationSpeed',c)
Этот график показывает, что шаблон элемента mainlobe уменьшается с частотой.
Применяйтесь фаза поддиапазона переключают формирователь луча к массиву. Направление интереса является азимутом на 30 ° и вертикальным изменением на 0 °. Существует 8 поддиапазонов.
direction = [30;0]; numbands = 8; beamformer = phased.SubbandPhaseShiftBeamformer('SensorArray',array,... 'Direction',direction,... 'OperatingFrequency',fc,'PropagationSpeed',c,... 'SampleRate',1e3,... 'WeightsOutputPort',true,'SubbandsOutputPort',true,... 'NumSubbands',numbands); rx = ones(numbands,numels); [y,w,centerfreqs] = beamformer(rx);
Постройте шаблон ответа массива с помощью весов и центральных частот от формирователя луча.
pattern(array,centerfreqs.',[-180:180],0,'Weights',w,'CoordinateSystem','rectangular',... 'PlotStyle','waterfall','Type','powerdb','PropagationSpeed',c)
Вышеупомянутый график показывает beamformed шаблон на центральной частоте каждого поддиапазона.
Постройте шаблон ответа на трех частотах в двух измерениях.
centerfreqs = fftshift(centerfreqs); w = fftshift(w,2); idx = [1,5,8]; pattern(array,centerfreqs(idx).',[-180:180],0,'Weights',w(:,idx),'CoordinateSystem','rectangular',... 'PlotStyle','overlay','Type','powerdb','PropagationSpeed',c) legend('Location','South')
Этот график показывает, что основное направление луча остается постоянным, в то время как ширина луча уменьшается с частотой.