# demod


用于通信仿真的解调

函数库: TySignalProcessing

# 语法

x, = demod(y,fc,fs,method)
x, = demod(y,fc,fs,method,opt)

# 说明

x, = demod(y,fc,fs,method) 使用方法中指定的方法,使用载波频率fc和采样率fs解调实际载波信号y。

x, = demod(y,fc,fs,method,opt)使用opt中指定的附加选项解调实载波信号y。

# 示例

频率调制和解调

生成以8 kHz采样的150 Hz正弦波,持续1秒。将调制信号嵌入方差为0.1²的高斯白噪声中。

using TyPlot
using TySignalProcessing
fs = 8000
t = [0:1/fs:1-1/fs;]
s = cos.(2*pi*150*t)

使用0.1的调制常数以3 kHz的载波频率对信号进行频率调制。

fc = 3000
rx, = modulate(s,fc,fs,"fm",0.1)

使用相同的载波频率和调制常数对信号进行频率解调。计算并绘制发射、接收和解调信号的功率谱估计。

y= demod(rx,fc,fs,"fm",0.1)
plot(s)
hold("on")
plot(y)
grid("on")

# 输入参数

y-调制信号
实向量|实矩阵

调制消息信号,指定为实向量或矩阵。除了pwm和ppm方法外,y的大小与x相同。

fc- 载波频率
实正标量

用于调制消息信号的载波频率,指定为实正标量。

fs- 采样率
实正标量

采样率,指定为实正标量。

method-使用的调制方法
"am"(默认)|"amdsb-sc"|"amdsb-tc"|"amssb"|"fm"|"pm"|"pwm"|"ppm"|"qam"

使用的调制方法,指定为以下方法之一:

  • am或amdsb-sc-幅度解调,双边带,抑制载波。将y乘以频率fc的正弦,并使用filtfilt应用五阶巴特沃斯低通滤波器。
x = y .* cos.(2 * pi * fc * t);
b, a = butter(5, fc * 2 / fs);
x = filtfilt(b, a, x[:]);
  • amdsb-tc-幅度解调,双边带,传输载波。将y乘以频率fc的正弦,并使用filtfilt应用五阶巴特沃斯低通滤波器。
x = y .* cos.(2 * pi * fc * t);
b, a = butter(5, fc * 2 / fs);
x = filtfilt(b, a, x[:]);

如果指定opt,则解调器从x中减去标量opt。opt的默认值为0。

  • "amssb"-幅度解调,单边带。将y乘以频率fc的正弦,并使用filtfilt应用五阶巴特沃斯低通滤波器。
x = y .* cos.(2 * pi * fc * t);
b, a = butter(5, fc * 2 / fs);
x = filtfilt(b, a, x[:]);
  • fm-频率解调。通过将y的希尔伯特变换调制为频率-fc Hz的复指数来解调FM波形,并获得结果的瞬时频率。
y=cos.(2*pi*fc*t + opt*cumsum(x))

cumsum是x积分的矩形近似值。modulate使用opt作为频率调制常数。如果未指定opt参数,modulate使用默认值,因此与fc的最大频率偏移为fc Hz。

  • pm-相位解调。通过将y的希尔伯特变换调制为频率-fc Hz的复指数来解调PM波形,并获得结果的瞬时相位。
y=cos.(2*pi*fc*t + opt*x)

调制使用opt作为相位调制常数。如果不指定opt参数,modulate使用默认值,因此最大相位偏移为π弧度。

  • pwm-脉宽解调。查找脉宽调制信号y的脉宽。解调器在x中返回一个向量,其元素以周期的分数指定每个脉冲的宽度。y中的脉冲应在每个载波周期的开始处开始,也就是说,它们应左对齐。modulate(x,fc,fs,"pwm","centered")产生在每个周期开始时居中的脉冲。y的长度是length(x)*fs/fc。

  • ppm-脉冲位置解调。查找脉冲位置调制信号y的脉冲位置。为了正确解调,脉冲不能重叠。x是length(t)*fc/fs。

  • qam-正交幅度解调。x1,x2=demod(y,fc,fs,"qam")将y乘以频率fc的余弦和正弦,并使用filtfilt应用五阶巴特沃斯低通滤波器。

x1 = y.*cos.(2*pi*fc*t);
x2 = y.*sin.(2*pi*fc*t);
b,a = butter(5,fc*2/fs);
x1 = filtfilt(b,a,x1[:]);
x2 = filtfilt(b,a,x2[:]);

输入参数opt的大小必须与y相同。

opt-某些方法的可选输入
实向量

可选输入,为某些方法指定。有关如何使用opt的更多详细信息,请参阅method。

# 输出参数

x-解调的消息信号
实向量|实矩阵

解调的消息信号,作为实向量或矩阵返回。

# 另请参阅

modulate | vco