信号处理趣学D10——简单理解过调失真(附例子和代码)
过调失真(distortion)是在幅值调制的时候,先偏置再调幅(偏置调幅或叫非抑制调幅),由于直流偏置不够大引起的。下面小虎就带大家用MATLAB仿真理解一下。
仿真结果
偏置后的原始信号如下:
y
1
=
s
i
n
(
20
π
t
)
+
1.3
y_1=sin(20\pi t)+1.3
y1=sin(20πt)+1.3
y
2
=
s
i
n
(
20
π
t
)
+
0.5
y_2=sin(20\pi t)+0.5
y2=sin(20πt)+0.5
下面一组图中,从左到右、上到下依次是偏置后的原始信号1,2、调幅波1,2、解调波1,2的时域图像。
- 直流偏置不够大时,如信号2,由于调质前的信号带有负电压,所以调幅波 x m ( t ) x_m(t) xm(t)的部分相位将发生 18 0 o 180^o 180o的偏移。
- 调幅波的包络线不再是原始调制波的形状,采用包络检波解调将无法恢复原来的波形。
- 过调失真在本例中解调后区别不明显。
代码分析
参数设置
采样频率是44100,采样间隔1/44100。调质波为:
y
=
s
i
n
(
20
π
t
)
y=sin(20\pi t)
y=sin(20πt)
Fs=44100;
dt=1.0/Fs;
T=1; N=T/dt;
t=[0:N-1]/N;
x1=sin(2*pi*10*t)+1.3;
x2=sin(2*pi*10*t)+0.5;
调制
subplot(2,2,1)
x4=2000*ammod(x1,400,Fs,0);
plot(t,x4);
axis([0,0.2,-5500,5500]);
subplot(2,2,2)
x5=2000*ammod(x2,400,Fs,0);
plot(t,x5);
axis([0,0.2,-5500,5500]);
解调
subplot(2,2,3)
x6=amdemod(x4,400,Fs,0);
plot(t,x6);
axis([0,0.2,-5500,5500]);
subplot(2,2,4)
x7=amdemod(x5,400,Fs,0);
plot(t,x7);
axis([0,0.2,-5500,5500]);
完整代码
Fs=44100;
dt=1.0/Fs;
T=1; N=T/dt;
t=[0:N-1]/N;
x1=sin(2*pi*10*t)+1.3;
x2=sin(2*pi*10*t)+0.7;
subplot(2,2,1)
x4=2000*ammod(x1,400,Fs,0);
plot(t,x4);
axis([0,0.2,-5500,5500]);
subplot(2,2,2)
x5=2000*ammod(x2,400,Fs,0);
plot(t,x5);
axis([0,0.2,-5500,5500]);
subplot(2,2,3)
x6=amdemod(x4,400,Fs,0);
plot(t,x6);
axis([0,0.2,-5500,5500]);
subplot(2,2,4)
x7=amdemod(x5,400,Fs,0);
plot(t,x7);
axis([0,0.2,-5500,5500]);
参考资料
[1] 张春华等,工程测试技术基础(第二版),华中科技大学出版社
[2] 何岭松等,中国大学MOOC——工程测试技术基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)