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

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

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

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 км.

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

The 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')

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 Гц.