Потери при распространении в свободном пространстве

Поддержка моделирования распространения в свободном пространстве

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

Создайте линейный импульсный сигнал 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 Гц.