Среды распространения имеют значительные эффекты на амплитуду, фазу и форму распространения пространственно-временных 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 Гц.