exponenta event banner

Потеря пути свободного пространства

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

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

Распространение сигнала линейного ЧМ-импульса на цель и обратно

Создайте линейный ЧМ-импульс длительностью 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')

Figure contains 2 axes. Axes 1 with title Magnitude of Transmitted Pulse contains an object of type line. Axes 2 with title Magnitude of Received Pulse contains an object of type line.

Задержка принимаемого импульса составляет приблизительно 14 мкс, ожидаемое значение для расстояния 4,123 км.

Одностороннее и двустороннее распространение

TwoWayPropagation имущества phased.FreeSpace Системная object™ позволяет моделировать одностороннее или двустороннее распространение. В следующем примере показано, как использовать это свойство для одного линейного ЧМ-импульса, распространяющегося на цель и обратно. Датчик представляет собой единую изотропную излучающую антенну, работающую на частоте 1 ГГц, расположенную на частоте (1000,250,10). Мишень расположена в (3000 750 20) и имеет нефлюктуирующую РСК площадью 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')

Figure contains an axes. The axes with title Transmitted Signal contains an object of type line.

Постройте график спектра распространяемого сигнала. Пик при 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')

Figure contains an axes. The axes with title Propagated Signal contains an object of type line.

Доплеровский сдвиг слишком мал, чтобы видеть. Наложите два спектра в области 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')

Figure contains an axes. The axes with title Transmitted and Propagated Signals contains 2 objects of type line. These objects represent Transmitted, Propagated.

По-видимому, пиковый сдвиг составляет приблизительно 1 Гц.