分析谐波失真

news2025/1/31 23:40:40

目录

简介

查看非线性的影响

量化非线性失真

降低谐波失真的输入衰减

SNR THD 和 SINAD 当作输入衰减的函数

用于消除失真的后处理

组合方法

总结


        此示例说明如何分析在具有噪声的情况下弱非线性系统的谐波失真。

简介

        在此示例中,我们将研究放大器的简化模型的输出,该放大器的噪声耦合到输入信号并且呈现非线性。我们将研究输入端的衰减如何降低谐波失真。我们还将举例说明如何对放大器输出端的失真在数学上进行校正。

查看非线性的影响

        查看放大器非线性影响的一种方便方法是查看用正弦波激励时其输出的周期图。正弦波的幅值设置为放大器的最大允许电压。(2 Vpk)

        在此示例中,我们将提供持续时间为 50 毫秒的 2 kHz 正弦波。

VmaxPk = 2;       % Maximum operating voltage
Fi = 2000;        % Sinusoidal frequency of 2 kHz
Fs = 44.1e3;      % Sample rate of 44.1kHz
Tstop = 50e-3;    % Duration of sinusoid
t = 0:1/Fs:Tstop; % Input time vector

% Use the maximum allowable voltage of the amplifier
inputVmax = VmaxPk*sin(2*pi*Fi*t);
outputVmax = helperHarmonicDistortionAmplifier(inputVmax);

        查看输出正弦波的放大区域。请注意,在绘制对时间的图时,很难从视觉上看出放大器的不完美之处。

plot(t, outputVmax)
xlabel('Time')
ylabel('Output Voltage')
axis([0 5e-3 -2.5 2.5])
title('Amplifier output')

        如图所示:

现在我们来查看放大器输出的周期图。

helperPlotPeriodogram(outputVmax, Fs, 'power','annotate');

        如图所示:

        请注意,我们不仅看到输入端的 2 kHz 正弦波,还看到 4 kHz、6 kHz、8 kHz 和 10 kHz 的其他正弦波。这些正弦波是 2 kHz 基频的倍数,这是由于放大器的非线性造成的。我们还看到相对平坦的噪声功率带。

量化非线性失真

        为了便于比较,让我们参考一些常见的失真指标周期图显示一些定义良好的基波信号的谐波。该图建议我们测量输入信号的总谐波失真,它返回所有谐波含量的功率与基波信号的比率。

thd(outputVmax, Fs)

         如图所示:

ans = -60.3888

        请注意,第三个(也是最大的)谐波比基波低约 60 dB。大部分失真发生在此处。我们还可以获得输入中总噪声的估计值。为此,我们调用 SNR,它返回基波功率与所有非谐波含量功率的比率。

snr(outputVmax, Fs)

        如图所示:

ans = 130.9300

         另一个有用的计算指标是 SINAD。它计算功率与信号中所有其他谐波含量和噪声含量的比率。

sinad(outputVmax, Fs)

        如图所示:

ans = 60.3888

         THD、SNR 和 SINAD 分别为 -60 dB、131 dB 和 60 dB。由于 THD 的幅值与 SINAD 大致相等,我们可以推断大部分失真是由谐波失真引起的。如果我们检查周期图,会注意到第三个谐波是输出失真的主要原因。

降低谐波失真的输入衰减

        大多数执行放大的模拟电路在谐波失真和噪声功率之间存在固有的折衷。在我们的示例中,与谐波失真相比,我们的放大器具有相对较低的噪声功率。这使得它适合检测低功率信号。如果我们的输入可以衰减到此低功率区域,我们可以还原一些谐波失真。

        让我们通过将输入电压降低二分之一来重复测量。

inputVhalf = (VmaxPk/2) * sin(2*pi*Fi*t);
outputVhalf = helperHarmonicDistortionAmplifier(inputVhalf);
helperPlotPeriodogram(outputVhalf, Fs, 'power','annotate');

        如图所示:

        我们再次使用原先的指标,这次测量降低输入电压后的效果。

%%
thdVhalf = thd(outputVhalf, Fs)
thdVhalf = -72.0676


%%
snrVhalf = snr(outputVhalf, Fs)
snrVhalf = 124.8767


%%
sinadVhalf = sinad(outputVhalf, Fs)
sinadVhalf = 72.0676

        请注意,简单地将输入功率水平衰减 6 dB 会降低谐波含量。SINAD 和 THD 从约 60 dB 提高到了约 72 dB。其代价是 SNR 从 131 dB 降低到了 125 dB。

SNR THD 和 SINAD 当作输入衰减的函数

        进一步衰减能否改善整体失真表现?让我们将 THD、SNR 和 SINAD 绘制为输入衰减的函数,从而扫描从 1 dB 到 30 dB 的输入衰减器。

% Allocate a table with 30 entries
nReadings = 30;
distortionTable = zeros(nReadings, 3);

% Compute the THD, SNR and SINAD for each of the attenuation settings
for i = 1:nReadings
  inputVbestAtten = db2mag(-i) * VmaxPk * sin(2*pi*Fi*t);
  outputVbestAtten = helperHarmonicDistortionAmplifier(inputVbestAtten);
  distortionTable(i,:) = [abs(thd(outputVbestAtten, Fs))
                          snr(outputVbestAtten, Fs)
                          sinad(outputVbestAtten, Fs)];
end

% Plot results
plot(distortionTable)
xlabel('Input Attenuation (dB)')
ylabel('Dynamic Range (dB)')
legend('|THD|','SNR','SINAD','Location','best')
title('Distortion Metrics vs. Input Attenuation')

        如图所示:

        该图显示对应于每个指标的可用动态范围。THD 的幅值对应于无谐波的范围。同样,SNR 对应于不受噪声影响的动态范围;SINAD 对应于没有失真的总动态范围。

        从图中可以看出,SNR 随着输入功率衰减的增加而降低。这是因为当衰减信号时,只有信号在衰减,但放大器的本底噪声保持不变。

        还要注意,总谐波失真的幅值会稳步改善,直到它与 SNR 曲线相交,之后测量变得不稳定。当谐波在放大器的噪声下“消失”时,就会出现这种情况。

        放大器衰减的一个可行选择项是 26 dB(产生 103 dB 的 SINAD)。这是谐波和噪声失真之间的合理折衷。

% Search the table for the largest SINAD reading
[maxSINAD, iAtten] = max(distortionTable(:,3));
fprintf('Max SINAD (%.1f dB) occurs at %.f dB attenuation\n', ...
  maxSINAD, iAtten)


Max SINAD (103.7 dB) occurs at 26 dB attenuation

         让我们绘制衰减器设置为 26 dB 时的周期图。

inputVbestAtten = db2mag(-iAtten) * VmaxPk * sin(2*pi*Fi*t);
outputVbestAtten = helperHarmonicDistortionAmplifier(inputVbestAtten);
helperPlotPeriodogram(outputVbestAtten, Fs, 'power','annotate','shownoise');

        如图所示:

         我们还在此处绘制了分布在整个频谱中的噪声功率水平。请注意,在此衰减设置下,第二个和第三个谐波在频谱中仍然可见,但也远小于总噪声功率。如果我们的应用使用可用频谱的较小带宽,我们将从进一步增加衰减以降低谐波含量中受益。

用于消除失真的后处理

        有时我们可以对放大器的一些非线性进行校正。如果放大器的输出经过数字化,我们可以通过对捕获的输出进行数字后处理并对非线性进行数学校正来还原更有用的动态范围。

        在我们的示例中,我们用线性斜坡激励输入,并拟合最适合输入的三次多项式。

inputRamp = -2:0.00001:2;
outputRamp = helperHarmonicDistortionAmplifier(inputRamp);
polyCoeff = polyfit(outputRamp,inputRamp,3)


polyCoeff = 1×4

    0.0010   -0.0002    1.0000   -0.0250

         现在我们已经有系数,我们可以在输出端执行后校正,并与原始的未校正输出进行比较。

correctedOutputVmax = polyval(polyCoeff, outputVmax);

helperPlotPeriodogram([outputVmax; correctedOutputVmax],Fs,'power');
subplot(2,1,1)
title('Uncorrected')
subplot(2,1,2)
title('Polynomial Corrected')

        如图所示:

        请注意,使用多项式校正时,第二个和第三个谐波会显著降低。让我们用校正后的输出再次重复测量。

thdCorrectedVmax = thd(correctedOutputVmax, Fs)
thdCorrectedVmax = -99.6194

%%
snrCorrectedVmax = snr(correctedOutputVmax, Fs)
snrCorrectedVmax = 130.7491

%%
sinadCorrectedVmax = sinad(correctedOutputVmax, Fs)
sinadCorrectedVmax = 99.6162

        请注意,我们的 SINAD(和 THD)从 60 dB 下降到 99 dB,同时保持 131 dB 的原始 SNR。

组合方法

        我们可以将衰减与多项式计算相结合,找到最大限度地降低系统整体 SINAD 的理想工作电压。

subplot(1,1,1)
% Add three more columns to our distortion table
distortionTable = [distortionTable zeros(nReadings,3)];
for i = 1:nReadings
  inputVreduced = db2mag(-i) * VmaxPk * sin(2*pi*Fi*t);
  outputVreduced = helperHarmonicDistortionAmplifier(inputVreduced);
  correctedOutput = polyval(polyCoeff, outputVreduced);
  distortionTable(i,4:6) = [abs(thd(correctedOutput, Fs))
                            snr(correctedOutput, Fs)
                            sinad(correctedOutput, Fs)];
end

h = plot(distortionTable)


h = 
  6x1 Line array:

  Line
  Line
  Line
  Line
  Line
  Line


%%
xlabel('Input attenuation (dB)')
ylabel('Dynamic Range (dB)')
for i = 1:3
  h(i+3).Color = h(i).Color;
  h(i+3).LineStyle = '--' ;
end
legend('|THD| (uncorrected)','SNR (uncorrected)','SINAD (uncorrected)', ...
 '|THD| (corrected)','SNR (corrected)','SINAD (corrected)','Location','best')
title('Distortion Metrics vs. Input Attenuation and Polynomial Correction');

        如图所示:

        在此处,我们对未校正的以及经过多项式校正的放大器的所有三个指标进行了绘图。从图中可以看出,THD 有显著的改进,而 SNR 不受多项式校正的影响。这在意料之中,因为多项式校正只影响谐波失真,而不影响噪声失真。

        让我们显示多项式校正时可能的最大 SINAD

[maxSINADcorrected, iAttenCorr] = max(distortionTable(:,6));
fprintf('Corrected:    Max SINAD (%.1f dB) at %.f dB attenuation\n', ...
  maxSINADcorrected, iAttenCorr)


Corrected:    Max SINAD (109.7 dB) at 17 dB attenuation

         对于经过多项式校正的放大器,放大器衰减的一个良好选择项是 20dB(产生 109.8 dB 的 SINAD)。

% Recompute amplifier at maximum SINAD attenuation setting with polynomial
inputVreduced = db2mag(-iAttenCorr) * VmaxPk * sin(2*pi*Fi*t);
outputVreduced = helperHarmonicDistortionAmplifier(inputVreduced);
correctedOutputVbestAtten = polyval(polyCoeff, outputVreduced);

helperPlotPeriodogram(correctedOutputVbestAtten, Fs, 'power','annotate','shownoise');
title('Periodogram of attenuated and polynomial corrected amplifier')

        如图所示:

        请注意,在理想衰减设置下,通过多项式校正,除了第二个谐波以外的所有谐波都应完全消失。如前所述,第二个谐波出现在总噪声基底功率水平的正下方。这在使用放大器全部带宽的应用中提供了合理的折衷。

总结

        我们演示了如何对出现失真的放大器输出应用多项式校正,以及如何选择合理的衰减值来降低谐波失真的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1093989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐动漫《头文字D》

《头文字D》是漫画家重野秀一作画的青年漫画,从1995年开始在《周刊Young Magazine》上连载,于2013年7月29日完结,电子版由漫番漫画连载 [1] 。已被改编成同名动画和电影,还有多本探讨汽车驾驶技巧的周边专书。头文字D漫画刚出版即…

机器学习: 初探 定义与应用场景

机器学习 第一课 初探 定义与应用场景 机器学习 第一课 初探 定义与应用场景机器学习的历史机器学习为什么重要?机器学习的定义机器学习在日常生活中的应用推荐系统语音识别图像识别 商业领域的机器学习金融风险评估股票市场预测客户关系管理 机器学习在医疗领域的应用疾病预测…

9、Docker 安装 Redis

1、下载镜像 docker pull redis:3.2.10 2、本机创建redis目录并修改配置文件 1)创建目录 mkdir /usr/local/redis 2)进入redis目录 cd /usr/local/redis 3)创建data目录 mkdir data 4)创建redis.conf文件 vi redis.conf 5&a…

人工智能轨道交通行业周刊-第63期(2023.10.9-10.15)

本期关键词:一体化智慧列车运行系统、车辆数字化运维管理、智能传感器、PHM、LKJ 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro…

数据结构之手撕顺序表(增删查改等)

0.引言 在本章之后,就要求大家对于指针、结构体、动态开辟等相关的知识要熟练的掌握,如果有小伙伴对上面相关的知识还不是很清晰,要先弄明白再过来接着学习哦! 那进入正题,在讲解顺序表之前,我们先来介绍…

【HCIP】HCIA复习

目录 大纲 情景代入 访问百度/谷歌服务器的准备工作 1、计算机网络发展第一阶段人机交互的加工过程 2、OSI参考模型 3、TCP/IP参考模型 访问谷歌(百度)服务器的流程 1、主机需要一个IP地址才能上网(本场景中通过DHCP服务获取IP地址&a…

【面试题解析】搜狐畅游:Redis IO多路复用中select、poll和epoll有何区别?

大家好,我是小米,今天给大家分享一个我在搜狐畅游面试中被问到的问题:请说一下 Redis 的 IO 多路复用中 select、poll、epoll之间的区别是什么?为了更好地回答这个问题,我将从以下几个角度进行阐述:概念简介…

CANoe仿真面板设计

CANoe仿真面板设计 CANoe Panel介绍关键步骤操作步骤添加系统变量添加Control面板添加Display面板 创建Desktop CANoe Panel介绍 panel(面板〕是CA№e的一个重要功能,为总线仿真提供了图形化的界面。用户可以在面板上添加合适的控件实时地改变信号或变量的值。 控件…

无人机新手防炸飞行技巧

不要在室内飞行,容易撞墙。起飞前设置好避障和返航模式。使用模拟器熟练掌握操控。选择开阔环境目视起飞。使用低速档平稳飞行。合理使用避障功能,不要盲目依赖。使用九宫格避障法。留意电量,及时返航。极低电量时放弃强行返航。飞行后及时为电池充电保养。

基于springboot实现音乐网站与分享平台项目【项目源码+论文说明】

摘要 本论文主要论述了如何使用JAVA语言开发一个音乐网站与分享平台 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述音乐网站与分享平台的当前背景以及系统开…

oppo A57刷机包更新

ozip转zip方便把官网下载的ozip包转换为可刷机的zip sdat2img-master方便发烧友制作system.img详情请看redmi.txt

finalshell连接虚拟机中的ubuntu

finalshell下载地址: https://www.finalshell.org/ubuntu设置root密码: sudo passwd rootubuntu关闭防火墙: sudo ufw disable安装ssh # sudo apt update #更新数据(可以不执行) # sudo apt upgrade #更新软件(可以不执行) sudo apt install open…

基于workbench的PTFE矩形密封圈压缩回弹仿真分析

研究背景: 近年来随着工业发展和科技进步,高压容器使用场景逐渐增大,使用环境越发苛刻,如高温、高压以及内部压力的波动,这都对容器端面密封性能的要求更为严格。端面密封所用的密封件必须具备优良的回弹性能和耐化学…

毅速丨模具3D打印材料有哪些选择

当前1.2709和CX是市面上最常用的3D打印模具钢材料,模具3D打印有没有更多的材料选择呢? 据了解,上海毅速推出的几款3D打印新材料正在被越来越多的行业所采用。如毅速的EM191S高性能高抛光不锈钢粉末,这款材料的抗开裂和耐腐蚀性能是…

使用VirtualBox安装Ubuntu系统【保姆级】

一、下载VirtualBox软件安装包 进入VirtualBox官网下载:Oracle VM VirtualBox 二、下载Ubuntu系统镜像 进入Ubuntu官网:https://cn.ubuntu.com/ 1. 点击【桌面系统】,进入桌面系统界面 2. 点击【下载Ubuntu】 ,进入Ubuntu桌面…

基于springboot实现在线blog博客平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现在线blog博客平台系统演示 摘要 社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。互联网具有便利性,速度快,效率高&#x…

【Java学习之道】线程的创建与启动

引言 如果你正在学习Java编程,那么你可能已经知道Java是一种多线程编程语言。多线程编程可以帮助我们更高效地利用CPU,同时完成多项任务。但是,你可能还不知道如何在Java中创建和启动线程。在本节中,我们将深入探讨Java中的线程创…

MAC上使用Wireshark常见问题

文章目录 介绍正文启动异常-Permission denied解决方法 过滤协议和地址指定源地址和目的地址调整 time format 介绍 简单记录Wireshark在日常使用过程中的遇到的小case。 正文 Wireshark相较于tcpdump使用较为简单,交互也更为友好。 点击Start即可启动抓包 启动…

java高校自习室座位预订系统springboot+vue

自习室预订座位管理系统被人们投放于现在的生活中进行使用,该款管理类软件就可以让管理人员处理信息的时间介于十几秒之间。在这十几秒内就能完成信息的编辑等操作。有了这样的管理软件,自习室预订座位管理信息的管理就离无纸化办公的目标更贴近了。 本项…

【C++进阶】:C++类型转换

C类型转换 一.C语言里的类型转换二.C语音类型转换的一些弊端三.C的四种类型转换1.static_cast2.reinterpret_cast3.const_cast4.dynamic_cast 一.C语言里的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者…