工程师。MFSKWaveform
具有多位置频率调制的连续信号发生器。
库::`[医]工程师` 座:: MFSK Waveform
资料描述
具有多位置频率调制(FM)的连续信号用于汽车雷达,以改善对多个目标距离的同步脉冲和多普勒检测。 系统对象*EngeePhased。MFSKWaveform*产生具有多位置FM的连续信号。 多位置调频信号由两个频率不断增加的交替序列组成,如<算法>>部分所述。
要生成具有多位置FM的连续信号,请按照以下步骤操作:
-
创建*EngeePhased。Mfskwaveform*对象并设置其属性。
-
用参数调用对象,就好像它是一个函数一样。
若要了解有关如何使用系统对象的详细信息,请参阅 AnyMath系统对象.
例子:
多位置频率调制信号的生成
Details
我们将产生具有采样频率的多位置频率调制的信号 10 MHz,所述步骤的持续时间 5 iss,步数 6,频率偏移 400 kHz和信号频段 4 兆赫。
初始化参数。
fs = 10e6 # Частота дискретизации (Гц)
tstep = 5e-6 # Длительность одного шага (с)
stepsPerSweep = 6 # Общее число ступеней перестройки частоты
freqOffset = 400e3 # Смещение частоты (Гц)
sweepBW = 4e6 # Полоса перестройки (Гц)
# Дополнительные параметры
PRF = 1 / (stepsPerSweep * tstep); # Частота повторения
sweeps2plot = 1;
让我们使用*EngeePhased。MFSKWaveform*来创建探测信号的系统对象*mfsk_wav*。
mfsk_wav = EngeePhased.MFSKWaveform(
SampleRate = fs,
StepTime = tstep,
StepsPerSweep = stepsPerSweep,
SweepBandwidth = sweepBW,
FrequencyOffset = freqOffset,
OutputFormat = "Sweeps",
NumSweeps = sweeps2plot
);
让我们打电话给*EngeePhased。使用*mfsk_wav*变量的mfskwaveform*系统对象。
mfsk_signal = mfsk_wav();
使用函数 情节 让我们以IQ组件、模块和信号相位的形式构建示波器。
# построение IQ-компонент
t_grid = range(start = 0,step = 1/fs,length = length(mfsk_signal)) * 1e6 # сетка времени, мкс
fig1 = plot(t_grid,real.(mfsk_signal),title = "синфазная составляющая",lab="",ylab="Амплитуда")
fig2 = plot(t_grid,imag.(mfsk_signal),title = "квадратурная составляющая",lab="",xlab = "Время, мкс",ylab="Амплитуда");
plot(fig1,fig2,layout = (2,1))

# построение модуля и фазы сигнала
fig3 = plot(t_grid,abs.(mfsk_signal),title = "Модуль комплексного сигнала",lab="",ylab="Амплитуда");
fig4 = plot(t_grid,angle.(mfsk_signal)*180/pi,title = "Аргумент комплексного сигнала",lab="",xlab = "Время, мкс",ylab="Фаза, град.");
plot(fig3,fig4,layout = (2,1))

信号的主要特征是频谱和频谱图。 让我们使用内置函数 周期图.
# расчет спектра сигнала
spec_MFSK,f = EngeePhased.Functions.periodogram(
mfsk_signal, # исходный сигнал
ones(size(mfsk_signal)...),
8192; # длина частоты дискретизации
out = :data, # тип выхода
fs = fs, # частота дискретизации
spectrumtype = "power" # тип спектра
);
使用函数可视化结果 情节.
plot(
f * 1e-6,
EngeePhased.Functions.mag2db.(spec_MFSK),
lab="", xlab = "Частота, МГц",
ylab = "Мощность, дБВт",
title = "Спектр сигнала",
ylim = (-70,-20)
)

为了计算频谱图,我们使用内置函数 频谱图.
# расчет спектрограммы
spectgm_cfm,f1,t1 = EngeeDSP.Functions.spectrogram(
real.(mfsk_signal);
nfft = 512, # длина БПФ
window = round(Int,length(mfsk_signal)/stepsPerSweep),
noverlap = 0, # перекрытие окна
spectrumtype = "power", # тип спектра — по мощности
freqrange = "onesided", # диапазон спектра — односторонний
out = :data, # тип выхода — массив данных
fs = fs # частота дискретизации
);
我们使用函数可视化频谱图计算的结果 热图.
# построение спектрограммы
heatmap(
t1[:]*1e6,
f1[:]*1e-6,
abs.(spectgm_cfm),color = :jet,
xlab = "Время, мкс",
ylab = "Частота Доплера, МГц"
)

算法
通过按照给定的多电平数字码切换载波频率形成具有多位置频率调制的信号:
哪里
-
--一个字符的持续时间;
-
--来自多位置字母表的信息符号的含义;
-
--位置之间的频率间距。
要生成逐步频率调制信号,必须设置以下参数:
*滤波器采样率 ; *脉冲持续时间 ; *脉冲重复率 ; *脉冲数 ; *频率步数 ; *信号的初始频率 ; *位置之间的频率间距 ; *信号的最终频率 ; *频率偏差 .
每个序列都是一组连续信号,频率不断增加。 偏移量 两个序列之间的差异是恒定的并且可以是正的或负的。 完整的信号由偶数步 相同的持续时间 . 然后每个序列由 步骤。 信号频率偏差 是任何序列的最高频率和最低频率之间的差。 意义 它总是正的,这表明频率的增加。 每个序列的连续步骤之间的频率差如下确定:
第一个序列的最低频率总是 0 Hz并且对应于带通信号的载波频率。 第二序列的最低频率可以是正的或负的并且等于 . 负频率对应于低于载波频率的带通信号的频率。 信号的持续时间设置为 . 信号参数对应的系统对象的属性如表所示。
| 信号参数 | 物业 |
|---|---|
|
|
|
|
|
|
|