AnyMath 文档

EngeePhased.NonlinearFMWaveform

非线性频率调制的信号发生器。

库::`[医]工程师` 座:: 非线性调频波形

资料描述

该*EngeePhased。NonlinearFMWaveform*系统对象创建非线性频率调制(NFM)信号。 由于时间和频率的非线性依赖性,LFM信号允许低频旁瓣。 根据属性支持四种不同的信号*FrequencyModulation*:

  • "多项式" -产生具有对应于多项式函数的瞬时频率的信号。

  • "双曲线" -产生双曲FM信号。

  • "混合线性切线" -产生结合线性调频和切向调频的混合LFM信号。

  • "阶梯价格" -产生具有逐步非线性FM价格的信号。

要生成信号,请按照以下步骤操作:

  1. 创建*EngeePhased。NonlinearFMWaveform*对象并设置其属性。

  2. 用参数调用对象,就好像它是一个函数一样。

若要了解有关如何使用系统对象的详细信息,请参阅 AnyMath系统对象.

语法

创造

  • 波形=EngeePhased。NonlinearFMWaveform() -创建具有非线性FM的信号发生器的系统对象 波形 具有默认属性。 默认情况下,信号具有多项式FM。

  • 波形=EngeePhased。NonlinearFMWaveform(Name=Value) -创建具有非线性FM的信号发生器的系统对象 波形 将指定的属性作为一对 名称=值,在哪里 姓名 -物业的名称,以及 价值 -适当的值。 您可以指定多个对 «名称-值» 对的顺序并不重要。 未指定的属性保留其默认值。

使用

  • Y=波形() -以列向量*Y*的形式返回具有非线性FM的信号。 *Y*参数可以包含一定数量的脉冲或一定数量的样本。

  • Y=波形(prfidx) -使用*prfidx*索引从由*PRF*属性设置的预定义值向量中选择脉冲重复率(PRF)。 如果*PRFOutputPort*属性设置为 真的. 在需要动态选择发送脉冲的情况下使用此语法。 在这种情况下,PRF*属性包括预定义的PRF选项列表。 在仿真期间,使用*prfidx,PRF选项中的一个被选择作为下一次传输的PRF。 请注意,传输总是在开始下一个脉冲之前完成当前脉冲。 因此,如果将属性设置为*OutputFormat*value "样本",然后指定属性*[Property:numSamples]*比脉冲短,有可能在该建模步骤,如果需要整个输出信号来完成先前发送的脉冲,则指定的*prfidx*将被忽略。

  • Y=波形(freqoffset) -使用*freqoffset*生成频率偏移信号。 在需要动态更新发送脉冲的频率的情况下使用该语法。 此语法适用于属性*FrequencyOffsetSource*值集 "输入端口".

  • Y,PRF=波形(_) -还返回当前脉冲重复率*PRF*。 若要使用此语法,请将*PRFOutputPort*属性设置为 真的,并为属性*OutputFormat*值 "脉冲".

  • Y,coeff=波形(_) -还返回当前脉冲的匹配*coeff*滤波器的系数。 若要使用此语法,请设置*[Property:CoordicientsOutputPort]*值 真的.

如果指定了包含可选输入和输出参数的属性,则可以组合它们。 可选输入和输出的列出顺序应与包含它们的属性相同。 例如, Y,PRF,coeff=波形(prfidx,freqoffset).

争论

输入参数

prfidx — 脉冲重复率指数

+ 一个正整数

Details

脉冲重复率指数(PRF),设定为正整数。 索引标识*PRF*属性中的条目。 在必须动态选择传输脉冲的情况下使用此参数。 在这种情况下,PRF*属性包含预定义的PRF选择选项列表。 在仿真期间,基于输入数据*prfidx,选择其中一个Prf作为下一传输的PRF。

依赖关系

若要使用此参数,请将*PRFOutputPort*属性设置为 真的.

freqoffset — 频率偏移,Hz

+ 标量,标量

Details

的频率偏移,设置为标量。 偏移允许您生成具有频率偏移的信号。 在需要动态更新发送脉冲的频率的情况下使用该自变量。

依赖关系

若要使用此参数,请将属性设置为*FrequencyOffsetSource*value "输入端口".

数据类型

漂浮64</无翻译>

输出参数

Y — 脉冲信号

+ 列向量

Details

作为列向量返回的输出信号。

数据类型

漂浮64</无翻译>

PRF — 脉冲重复 费率+ 标量,标量

Details

以Hz为单位的脉冲重复率,作为标量返回。 *PRF*包含系统使用的当前脉冲重复率。

依赖关系

若要使用此参数,请将*PRFOutputPort*属性设置为 真的,并为属性*OutputFormat*值 "脉冲".

数据类型

漂浮64</无翻译> 支持复数::是

科夫 — 匹配滤波器的系数

+ 向量资料 | 矩阵

Details

匹配滤波器的系数,作为复向量返回 或复数矩阵 .

依赖关系

若要使用此参数,请将属性设置为*[Property:CoordicientsOutputPort]*value 真的.

数据类型

漂浮64</无翻译> 支持复数::是

特征

# NumSteps — 频率步数
Real number

Details

价的逐步非线性频率调制的频率步数,设为正整数。

默认值 — 50.

依赖关系

若要使用此属性,请设置*FrequencyModulation*值 "阶梯价格".

# LinearTangentBalance — 线性频率调制与根据切向律的频率调制之间的平衡系数
Real number

Details

线性频率调制和切向频率调制之间的无量纲平衡系数,定义为标量。

默认值 — 0.5.

依赖关系

若要使用此属性,请设置*FrequencyModulation*值 "混合线性切线".

# SweepInterval — 频率偏差间隔
String

Details

的频偏区间,设为 "积极" (默认情况下)或 "对称":

  • "积极" -信号的频率将从 0 以前 B,在哪里 B -*SweepBandwidth*中偏差带的宽度。

  • "对称" -信号的频率将从 -B/2 以前 B/2.

# BandwidthFactors — 带宽系数
Scalar / vector / matrix of real numbers

Details

价的逐步非线性频率调制的带宽系数,指定为形式的双元正向量 [BL BC]. 意义 BL 确定信号的线性分量的带宽,以及 公元前 -非线性分量的带宽。 总频偏频带为 ,在哪里 -属性的值*NumSteps*。 随着你的增加 线性分量的带宽约等于 BL 而非线性分量的带宽随增 .

默认值 — [1e4 2e4].

依赖关系

若要使用此属性,请设置*FrequencyModulation*值 "阶梯价格".

# OutputFormat — 输出信号格式
String

Details

的输出信号格式,设置为 "脉冲" (默认情况下)或 "样本":

如果设置此属性的值 "脉冲",则该块的输出由若干个脉冲组成。 脉冲数是属性NumPulses*的值。

如果设置此属性的值 "样本",则该块的输出由若干个样本组成。 样本数是[Property:numSamples]*属性的值。

# NumSamples — 输出信号的采样数
Real number

Details

输出信号的采样数,设为正整数。

默认值 — 100.

依赖关系

若要使用此属性,请设置*OutputFormat*值 "样本".

# PolynomialCoefficients — 多项式函数的系数
Scalar / vector / matrix of real numbers

Details

多项式频率函数的系数,作为长度的实向量给出 . 向量表示多项式的系数 -第三学位。 *多项式*中的第一个元素是最高度项的系数 . 最后一个元素是零度项的系数。

默认值 — [1 0 0].

依赖关系

若要使用此属性,请设置*FrequencyModulation*值 "多项式".

# FrequencyOffsetSource — 频率偏移设置的来源
String

Details

频率偏移设置的来源,设置为 "财产" (默认情况下)或 "输入端口":

如果值设置为 "财产",则偏移量由FrequencyOffset*的值决定。

*如果值设置为 "输入端口",偏移量由*FreqOffset*参数的值确定。

# DutyCycle — 填充系数
Real number

Details

在范围内指定为标量的无量纲填充因子 [0, 1]. 脉冲宽度是*DutyCycle*属性的值除以*PRF*属性的值。 此值是无量纲的。

默认值 — 0.5.

依赖关系

若要使用此属性,请将*DurationSpecification*属性设置为 "占空比".

# SweepDirection — 频率调制范围的频偏方向
String

Details

具有非线性频率调制的信号的频率偏差的方向:

  • "向上" (默认)-增加频率。

  • "向下" -频率降低。

# Envelope — 频率调制信号的包络
String

Details

频率调制信号的包络,由以下值之一指定: "矩形" (默认情况下), "高斯", "汉明", "切比雪夫", "汉恩", "凯撒" 或 "泰勒".

# NumPulses — 输出信号脉冲数
Real number

Details

输出信号的脉冲数,设为正整数。

默认值 — 1.

依赖关系

若要使用此属性,请设置*OutputFormat*值 "脉冲".

# PRF — 脉冲重复率
Real number

Details

脉冲重复率(PRF),设置为标量或字符串向量。 测量单位为Hz。 脉冲重复周期(PRI)是脉冲重复率(PRF)的倒数。 PRF值必须满足以下约束: PRF*和PulseWidth*的乘积必须小于或等于一。 该条件要求脉冲宽度小于一个PRI。 对于相位编码信号,脉冲持续时间等于一个码片的持续时间与码片数量的乘积。 RelationSampleRate*k*PRF*必须是整数。 此条件要求一个PRI中的样本数为整数。

可以仅使用*PRF*属性值或结合*prfidx*输入参数的属性值来设置PRF值。 IfPRFOutputPort*具有值 错误,仅使用*PRF*属性设置PRF。 你可以:

**通过将*PRF*属性指定为正实标量值来实现常量PRF。

**通过将*PRF*属性指定为具有正实数元素的向量字符串来实现离散PRF。 每个对象调用都使用此向量的连续元素作为PRF。 一旦对象到达向量的最后一个元素,它就循环地继续向量的第一个元素的过程。

当PRFOutputPort*具有值时 真的 您可以将*PRF*属性与输入参数*prfidx*结合使用来设置PRF的值。 您可以通过将*PRF*属性指定为具有正实数元素的向量字符串来实现可选PRF。 执行对象时,使用输入参数*prfidx*中指定的索引来选择PRF,以索引PRF向量。

在所有情况下,如果将属性设置为*OutputFormat*value,则输出样本的数量是固定的 "样本". 使用可变脉冲重复率(PRF)并设置属性*OutputFormat*值时 "脉冲" 计数的数量可能会有所不同。

默认值 — 10e3.

# SweepBandwidth — 频率偏差
Real number

Details

非线性频率调制信号的带宽,指定为正标量。 测量单位为Hz。

默认值 — 10e4.

# EnvelopeSidelobeLevel — 包络窗口的旁瓣的水平
Real number

Details

用作信号的包络的Kaiser、Chebyshev或Taylor窗口的旁瓣的电平被设置为正标量。 测量单位为dB。

默认值 — 30.

依赖关系

若要使用此属性,请设置*Envelope*值 "凯撒", "切比雪夫" 或 "泰勒".

# TangentCurvePortion — tan(x)曲线的截面
Real number

Details

曲线的截面 之间 −π/2 和 +π/2,在混合线性-切向频率调制函数中用作切向项,定义为从 0 以前 +π/2.

默认值 — 1.4.

依赖关系

若要使用此属性,请设置*FrequencyModulation*值 "混合线性切线".

# CoefficientsOutputPort — 使能匹配滤波器系数的输出
Logical

Details

通过指定值启用或禁用匹配滤波器的系数的输出 错误 (默认情况下)或 真的. 将此属性设置为 真的 为仿真期间使用的波形启用匹配滤波器系数的输出。

# FrequencyModulation — 一种非线性频率调制
String

Details

一种非线性频率调制:

  • "多项式" (默认情况下)-块输出端的信号频率由多项式函数生成。 多项式的系数设置在属性*[Property:Polynomials]*中。 得到的频率函数被归一化,使得每个脉冲占据在*SweepBandwidth*中指定的频带。 如果*FrequencyModulation*设置为 "多项式".

  • "双曲线" -单元产生双曲频率调制信号。 使用*HyperbolicStartFrequency*属性设置双曲脉冲的初始频率。 在这种情况下不使用Property*SweepInterval*。

  • "混合线性切线" -单元根据切向律[1]生成线性频率调制和频率调制相结合的混合波形。 线性频率调制和根据切向律的频率调制之间的平衡设置在属性*LinearTangentBalance*中,并且部分曲线 ,用于调制的切向定律,在属性*TangentCurvePortion*中设置。

  • "阶梯价格" -该块生成价格[2]的非线性频率调制的逐步版本。 在这种情况下,不使用属性*SweepBandwidth*,并且频率偏差由*BandwidthFactors*中指定的带宽系数和属性*NumSteps*中的频率步数确定。

# PulseWidth — 脉冲持续时间
Real number

Details

的脉冲持续时间,设置为正标量。 值必须满足条件*PulseWidth*<1/PRF。 测量单位为秒。

默认值 — 50e-6.

依赖关系

若要使用此属性,请将*DurationSpecification*属性设置为 "脉冲宽度".

# SampleRate — 采样率
Real number

Details

信号的采样频率,设置为正标量。 采样率与脉冲重复率之比必须是正整数,因此每个脉冲中的采样数必须是整数。 测量单位为Hz。

默认值 — 100e3.

# HyperbolicStartFrequency — 双曲脉冲的初始频率
Real number

Details

频率调制信号的双曲线脉冲的初始频率,设置为正标量。 测量单位为Hz。

默认值 — 200e3.

# DurationSpecification — 脉冲持续时间设定方法
String

Details

脉冲持续时间的设置方法,设为 "脉冲宽度" (默认情况下)或 "占空比":

  • "脉冲宽度" -使用*PulseWidth*属性设置脉冲持续时间。

  • "占空比" -脉冲持续时间从属性*PRF*和*DutyCycle*的值计算。 脉冲宽度等于属性的值*DutyCycle*除以属性的值*PRF*。

# PRFOutputPort — 启用PRF输出
Logical

Details

如果设置此属性的值 真的. 您可以将索引参数传递给对象,以便从属性值*PRF*的向量中选择预定义值。 如果设置此属性的值 错误 (默认情况下),对象将使用*PRF*属性来定义模拟中使用的PRF序列。

# FrequencyOffset — 频率偏移
Real number

Details

的频率偏移,设置为标量。 测量单位为Hz。

默认值 — 0.

依赖关系

若要使用此属性,请设置*FrequencyOffsetSource*值 "财产".

方法

所有系统对象通用

步!::运行系统对象运算算法 释放!::允许更改系统对象属性的值 重置!::重置系统对象的内部状态

例子:

具有双曲线定律的NLCHM信号的形成

Details

让我们形成一个具有双曲定律的NLCHM信号,脉冲持续时间 50 ms,初始频率 10 kHz和最终频率 500 赫兹。

初始化参数。

fs = 20e3 # Частота дискретизации (Гц)
dur_spec = "Pulse width" # Метод формирования длительности импульсов
τи = 50e-3 # длительность импульса (с)

Q = 1 # скважность
prf = round(1/(Q*τи)) # Частота повторения импульсов (Гц)

freq_off_type = "Property" # способ задания параметров "Property" — в параметрах СО
freq_off = 0 # значение начальной частоты спектра (Гц)
out_type = "Pulses" # тип выходного сигнала "Pulses" — по импульсам
num_pulses = 1 # количество импульсов

f1 = 10e3 # начальная частота девиации
f2 = 0.5e3 # конечная частота спектра
Δf = f1 - f2 # ширина спектра НЛЧМ-сигнала
sw_dir = "Down" # направление изменения частоты
type_modulate = "Hyperbolic";

让我们使用*EngeePhased。Nlfmwaveform*创建探测信号系统对象*nlfm_poly_waveform*。

nlfm_poly_waveform = EngeePhased.NonlinearFMWaveform(
    SampleRate = fs, # частота дискретизации
    PulseWidth = τи, # длительность импульса
    SweepBandwidth = Δf, # девиация частоты
    FrequencyModulation = type_modulate, # тип модуляции
    HyperbolicStartFrequency = f1, # начальное значение частоты
    SweepDirection = sw_dir, # направление изменения частоты
    PRF = prf, # частота следования импульсов
    OutputFormat = out_type,
    NumPulses = num_pulses
);

调用*EngeePhased。Nlfmwaveform*系统对象使用*nlfm_poly_waveform变量*:

nlfm_signal = nlfm_poly_waveform();

使用函数 情节 让我们以IQ组件、模块和信号相位的形式构建示波器。

# построение IQ-компонент
t_grid = range(start = 0,step = 1/fs,length = length(nlfm_signal)) * 1e6 # сетка времени, мкс
fig1 = plot(t_grid,real.(nlfm_signal),title = "синфазная составляющая",lab="",ylab="Амплитуда")
fig2 = plot(t_grid,imag.(nlfm_signal),title = "квадратурная составляющая",lab="",xlab = "Время, мкс",ylab="Амплитуда");

plot(fig1,fig2,layout = (2,1))

object phased nonlinear waveform 3 cn

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

plot(fig3,fig4,layout = (2,1))

object phased nonlinear waveform 4 cn

信号的主要特征是频谱和频谱图。 让我们使用内置函数 周期图.

# расчет спектра сигнала
spec_NLFM,f = EngeePhased.Functions.periodogram(
    nlfm_signal, # исходный сигнал
    ones(size(nlfm_signal)...),
    8192; # длина частоты дискретизации
    out = :data, # тип выхода
    fs = fs, # частота дискретизации
    spectrumtype = "power" # тип спектра
);

使用函数可视化结果 情节.

plot(
    f * 1e-3,
    EngeePhased.Functions.mag2db.(spec_NLFM),
    lab="", xlab = "Частота, кГц",
    ylab = "Мощность, дБВт",
    title = "Спектр сигнала"
)

object phased nonlinear waveform 5 cn

频谱以一个中心频率为中心 ,带条纹 . 为了计算频谱图,我们使用内置函数 频谱图.

# расчет спектрограммы
spectgm_nlfm,f1,t1 = EngeeDSP.Functions.spectrogram(
    nlfm_signal;
    nfft = 1024, # длина БПФ
    window = 100,
    noverlap = 90, # перекрытие окна
    spectrumtype = "power",  # тип спектра — по мощности
    freqrange = "twosided", # диапазон спектра — двусторонний
    out = :data, # тип выхода — массив данных
    fs = fs # частота дискретизации
);

我们使用函数可视化频谱图计算的结果 热图.

# построение спектрограммы
heatmap(
    t1[:]*1e3,
    f1[:]*1e-3,
    abs.(spectgm_nlfm),color = :jet,
    xlab = "Время, мс",
    ylab = "Частота Доплера, кГц",
)

object phased nonlinear waveform 6 cn

算法

NLFM无线电脉冲可以写成

哪里

  • --脉冲持续时间;

  • --非线性相变律(例如,双曲线或对称切向律)。

要生成具有非线性频率调制的信号,必须设置以下参数:

*滤波器采样率 ; *脉冲持续时间 ; *脉冲重复率 ; *脉冲数 ; *信号的初始频率 ; *信号的最终频率 ; *频率偏差 .

该图显示了具有双曲线定律的NLFM信号。 .

object phased nonlinear waveform 1 cn

文学作品

  1. 柯林斯,T.和P.阿特金斯。 _有源声纳的线性调频啁啾。_IEE Proceedings-Radar,Sonar and Navigation146.6(1999):312-316.

  2. Levanon,Nadav和Eli Mozeson。 _Radar信号。_John Wiley&Sons,2004,pp.92-93.

  3. 多瑞,阿明*沃尔特。 _生成用于雷达的非线性FM线性调频波形。_没有。 SAND2006-5856. 桑迪亚国家实验室(SNL),Albuquerque,NM和Livermore,CA(美国),2006。

  4. Cook,c.E. _A类非线性FM脉冲压缩信号。_IEEE52.11会议记录(1964):1369-1371.

  5. Yang,J.和T.K.Sarkar。 _doppler-双曲频率调制波形的不变性质。_微波和光学技术快报48.6(2006):1174-1179.

  6. 梅尔文,威廉L.和詹姆斯谢尔。 现代雷达原理:先进技术。_科技酒吧., 2013.

  7. Alphonse,Sebastian和Geoffrey A.Williamson。 _一类NLFM雷达信号的评估。_EURASIP信号处理进展杂志2019.1(2019):1-12.