Окружения распространения оказывают значительные эффекты на амплитуду, фазу и форму распространяющихся пространственно-временных волновых полей. В некоторых случаях можно хотеть симулировать систему, которая распространяет узкополосные сигналы через свободное пространство. Если это так, можно использовать phased.FreeSpace
Система object™ для моделирования зависящих от области значений временных задержек, сдвига фазы, доплеровского сдвига и эффектов усиления.
Рассмотрим этот объект как канал распространения «точка-точка». Путем установки свойств объекта можно настроить определенные характеристики окружения и распространяющихся через нее сигналов, включая:
Скорость распространения и частота дискретизации сигнала, который вы распространяете
Частота несущей сигнала
Является ли объект моделей односторонним или двухсторонним распространением
Каждый раз, когда вы звоните step
на phased.FreeSpace
объект, вы задаете не только сигнал для распространения, но также местоположение и скорость начала и назначения сигнала.
Вы можете использовать fspl
для определения потерь при распространении в свободном пространстве в децибелах для заданных расстояния и длины волны.
Предположим, что передатчик расположен на (1000,250,10) в глобальной системе координат. Предположим, что цель расположена на (3000 750 20). Передатчик работает на 1 ГГц. Определите потери при распространении в свободном пространстве в децибелах для узкополосного сигнала, распространяющегося к цели и от нее.
[tgtrng,~] = rangeangle([3000; 750; 20],[1000; 250; 10]);
Умножьте область значений на два для двухстороннего распространения.
tgtrng = 2*tgtrng;
Определите длину волны для 1 ГГц.
lambda = physconst('LightSpeed')/1e9;
Решить потерю используя fspl
.
L = fspl(tgtrng,lambda)
L = 104.7524
Потери при распространении в свободном пространстве в децибелах составляют приблизительно 105 дБ.
Также можно вычислить потерю непосредственно из
Loss = pow2db((4*pi*tgtrng/lambda)^2)
Loss = 104.7524
Создайте линейную FM импульсный сигнал длительностью 50 мс с шириной полосы 100 кГц. Моделируйте зависящие от области значений задержку и потери амплитуды, происходящие во время двухстороннего распространения. Импульс распространяется между передатчиком, расположенным на (1000 250 10), и мишенью, расположенной на (3000 750 20). Сигналы распространяются со скоростью света.
Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step
синтаксис. Для примера замените myObject(x)
с step(myObject,x)
.
waveform = phased.LinearFMWaveform('SweepBandwidth',1e5,... 'PulseWidth',5e-5,'OutputFormat','Pulses',... 'NumPulses',1,'SampleRate',1e6,'PRF',1e4); signal = waveform(); channel = phased.FreeSpace('SampleRate',1e6,... 'TwoWayPropagation',true,'OperatingFrequency',1e9); y = channel(signal,[1000; 250; 10],[3000; 750; 20],[0;0;0],[0;0;0]);
Постройте график величины передаваемого и принимаемого импульса, чтобы показать амплитудные потери и временную задержку.
t = unigrid(0,1/waveform.SampleRate,1/waveform.PRF,'[)'); subplot(2,1,1) plot(t.*1e6,abs(signal)) title('Magnitude of Transmitted Pulse') xlabel('Time (microseconds)') ylabel('Magnitude') subplot(2,1,2) plot(t.*1e6,abs(y)) title('Magnitude of Received Pulse') xlabel('Time (microseconds)') ylabel('Magnitude')
Задержка в полученном импульсе составляет приблизительно 14 мкс, ожидаемое значение для расстояния 4,123 км.
The TwoWayPropagation
свойство phased.FreeSpace
Системная object™ позволяет моделировать одностороннее или двухстороннее распространение. Следующий пример демонстрирует, как использовать это свойство для одного линейного FM-импульса, распространяющегося на цель и назад. Датчик представляет собой одну изотропную излучающую антенну, работающую на 1 ГГц, расположенную на (1000,250,10). Цель расположена на (3000 750 20) и имеет неколеблющуюся RCS 1 квадратного метра.
Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step
синтаксис. Для примера замените myObject(x)
с step(myObject,x)
.
Следующий код создает необходимые системные объекты и вычисляет область значений и угол от антенны до цели.
waveform = phased.LinearFMWaveform('SweepBandwidth',1e5,... 'PulseWidth',5e-5,'OutputFormat','Pulses',... 'NumPulses',1,'SampleRate',1e6); antenna = phased.IsotropicAntennaElement('FrequencyRange',[500e6 1.5e9]); transmitter = phased.Transmitter('PeakPower',1e3,'Gain',20); radiator = phased.Radiator('Sensor',antenna,'OperatingFrequency',1e9); channel = phased.FreeSpace('SampleRate',1e6,... 'TwoWayPropagation',true,'OperatingFrequency',1e9); target = phased.RadarTarget('MeanRCS',1,'Model','Nonfluctuating'); collector = phased.Collector('Sensor',antenna,'OperatingFrequency',1e9); sensorpos = [3000;750;20]; tgtpos = [1000;250;10]; [tgtrng,tgtang] = rangeangle(sensorpos,tgtpos);
Потому что TwoWayPropagation
для свойства задано значение true
Общее распространение вычисляется только один раз.
Вычислите излучаемый сигнал.
pulse = waveform(); pulse = transmitter(pulse); pulse = radiator(pulse,tgtang);
Распространите импульс на цель и назад.
pulse = channel(pulse,sensorpos,tgtpos,[0;0;0],[0;0;0]); pulse = target(pulse); sig = collector(pulse,tgtang);
Кроме того, можно разбить двухстороннее распространение на два отдельных односторонних пути распространения. Вы делаете это, устанавливая TwoWayPropagation
свойство к false
.
channel1 = phased.FreeSpace('SampleRate',1e9,... 'TwoWayPropagation',false,'OperatingFrequency',1e6);
Излучайте импульс.
pulse = waveform(); pulse = transmitter(pulse); pulse = radiator(pulse,tgtang);
Передайте импульс от антенны к цели.
pulse = channel1(pulse,sensorpos,tgtpos,[0;0;0],[0;0;0]); pulse = target(pulse);
Передайте отраженный импульс от цели к антенне.
pulse = channel(pulse,tgtpos,sensorpos,[0;0;0],[0;0;0]); sig = collector(pulse,tgtang);
Этот пример показывает, как распространить сигнал в свободном пространстве от стационарного радара к движущейся цели.
Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step
синтаксис. Для примера замените myObject(x)
с step(myObject,x)
.
Задайте скорость выборки сигнала, скорость распространения и частоту несущей. Задайте сигнал как синусоиду частоты 150 Гц. Установите частоту дискретизации равную 1 кГц, а частоту несущей равную 300 МГц. Скорость распространения - это скорость света.
fs = 1.0e3;
c = physconst('Lightspeed');
fc = 300e3;
f = 150.0;
N = 1024;
t = (0:N-1)'/fs;
x = exp(1i*2*pi*f*t);
Предположим, что цель приближается к радару со скоростью 300,0 м/с, а радар стационарный. Найдите доплеровский сдвиг, который соответствует этой относительной скорости.
v = 1000.0; dop = speed2dop(v,c/fc)
dop = 1.0007
Из формулы односторонний допплеровский сдвиг составляет 1 Гц.
Создайте phased.FreeSpace
Система object™ и использует его, чтобы распространить сигнал от радара к цели. Предположим, что радар находится на (0, 0, 0), а цель на (100, 0, 0).
channel = phased.FreeSpace('SampleRate',fs,... 'PropagationSpeed',c,'OperatingFrequency',fc); origin_pos = [0;0;0]; dest_pos = [100;0;0]; origin_vel = [0;0;0]; dest_vel = [-v;0;0]; y = channel(x,origin_pos,dest_pos,origin_vel,dest_vel);
Постройте график спектра переданного сигнала. Пик на 150 Гц отражает частоту сигнала.
window = 64; ovlp = 32; [Pxx,F] = pwelch(x,window,ovlp,N,fs); plot(F,10*log10(Pxx)) xlabel('Frequency (Hz)') ylabel('Power/Frequency (dB/Hz)') title('Transmitted Signal')
Постройте график спектра распространенного сигнала. Пик на 250 Гц отражает частоту сигнала плюс доплеровский сдвиг 100 Гц.
window = 64; ovlp = 32; [Pyy,F] = pwelch(y,window,ovlp,N,fs); plot(F,10*log10(Pyy)) grid xlabel('Frequency (Hz)') ylabel('Power/Frequency (dB/Hz)') title('Propagated Signal')
Допплеровский сдвиг слишком мал, чтобы видеть. Наложите два спектра в области 150 Гц.
figure idx = find(F>=130 & F<=170); plot(F(idx),10*log10(Pxx(idx)),'b') grid hold on plot(F(idx),10*log10(Pyy(idx)),'r') hold off xlabel('Frequency (Hz)') ylabel('Power/Frequency (dB/Hz)') title('Transmitted and Propagated Signals') legend('Transmitted','Propagated')
Пиковый сдвиг, по-видимому, составляет приблизительно 1 Гц.