一、实现功能
1、读取ADC采集的数字量,显示时域波形。
2、计算波形总谐波失真。
二、代码
废话少说,直接上代码(博主使用的是Matlab 2014b):
%author:Meng
%date:2020/10/10
%name:THD calculate
clc;
clear;
pathname = 'F:\THD_test\test\123.txt';
data=load(pathname); %读取数据为txt文件格式 此文件为ADC采集数字量
x = data;
Fs = 100000; %采样率设置 和实际采样率需一样
t = 0:1/Fs:1; %时间间隔
figure(1);
plot(t(1:500),x(1:500)); %画出波形时域图
NumHarmonics = 5; %谐波个数,保留的谐波个数
[thd_db,harmpow,harmfreq] = thd(x,Fs,NumHarmonics); %计算thd 单位为dB
percent_thd = 100*(10^(thd_db/20)); %转换为百分比
T = table(harmfreq,harmpow,'VariableNames',{'Frequency','Power'});
figure(2);
thd(x, Fs, NumHarmonics); %画出谐波图
display( percent_thd); %打印最终总谐波失真(百分比)
三、结果
图3-1 时域波形图
图3-2 THD图形
图3-3 THD结果(最终为%形式)