Среды распространения имеют значительные эффекты на амплитуду, фазу и форму распространения пространственно-временных wavefields. В некоторых случаях можно хотеть моделировать систему, которая распространяет узкополосные сигналы через свободное пространство. Если так, можно использовать Систему 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 μs, ожидаемым значением для расстояния 4,123 км.
Свойство 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 Гц.