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