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

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

Среды распространения оказывают значительные влияния на амплитуду, фазу и форму распространения пространственно-временных волновых полей. В некоторых случаях можно хотеть симулировать систему, которая распространяет узкополосные сигналы через свободное пространство. Если так, можно использовать 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 objects. Axes object 1 with title Magnitude of Transmitted Pulse contains an object of type line. Axes object 2 with title Magnitude of Received Pulse contains an object of type line.

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

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

TwoWayPropagation свойство phased.FreeSpace Система object™ позволяет вам симулировать или одну - или двухстороннее распространение. Следующий пример демонстрирует, как использовать это свойство для одного линейного импульса FM, распространяющего к цели и назад. Датчик является одной изотропной антенной излучения, действующей на уровне 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 object. The axes object 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 object. The axes object 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 object. The axes object with title Transmitted and Propagated Signals contains 2 objects of type line. These objects represent Transmitted, Propagated.

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

Для просмотра документации необходимо авторизоваться на сайте