主要内容

使用自己的函数降低饱和信号

如果数据大于给定的饱和点,传感器可以返回裁剪读数。为了重建读数,你可以通过与饱和间隔相邻的点拟合一个多项式。编写一个执行重构的函数,并将其集成到信号分析仪

产生一个三通道信号采样在1 kHz为14秒。信号有几个不同大小和形状的峰。读取信号的传感器在0.1 V时饱和。

fs = 1000;t = 0:1 / fs:赔率/ fs;sig =[唧唧声(2 t - 1, 0.1, 17日,“二次”1)。*罪(2 *π* t / 5);唧唧声(2、2、2、2.1、“二次”, 100)。* exp (- (t - 6.5)。^ 2/20)。*罪(2 *π* t * 2);0.85 * besselj(0、5 *(罪(2 *π* (t + 1.5)。^ 2/20)。^ 2))。*罪(2 *π* t / 9)];sigsat =团体;stv = 0.1;Sigsat (Sigsat >= stv) = stv;

开放信号分析仪将原始信号和饱和信号拖到信号表中。将每个原始和饱和的通道拖到自己的显示。

写一个函数,使用多项式来重建信号峰值:

  • 第一个输入参数,x,为输入信号。该参数必须是一个向量,并被视为单个通道。

  • 第二个输入参数,,是时间值的向量。向量必须和信号有相同的长度。如果输入信号没有时间信息,函数将此参数读取为一个空数组。

  • 使用变长度输入宗量以指定其他输入参数。如果没有额外的输入参数,可以省略变长度输入宗量.以逗号分隔的有序列表形式输入附加参数进行预处理选项卡。

  • 第一个输出参数,y,为预处理信号。

  • 第二个输出参数,吹捧,是输出时间值的向量。如果输入信号没有时间信息,吹捧作为空数组返回。

  • 要实现您的算法,您可以使用任何MATLAB®或信号处理工具箱™函数。

函数[y,兜售]= declip (x,锡,变长度输入宗量)%通过拟合多项式降低饱和信号%初始化输出信号y = x;%对于没有时间信息的信号,使用样本数作为横坐标如果isempty(tIn) tOut = [];t =(1:长度(x));其他的t =锡;兜售= t;结束指定多项式的次数作为一个可选的输入参数%,并提供默认值4如果Nargin <3 NDX = 4;其他的ndx =变长度输入宗量{1};结束%实现你的算法,你可以使用任何MATLAB或信号%处理工具箱函数%找出信号饱和的时间间隔并生成一个%数组包含间隔端点idx =找到(x = = max (x));冷杉= (true; diff (idx) ~ = 1];Ide = [idx(fir) idx(fir([2:end 1]))];%对于每个区间,拟合一个ndx度的多项式除以ndx+1点%在区间前,ndx+1点在区间后bef = ide(K,1);尾= ide (k, 2);Intv = [bef-1+(-ndx:0) aft+1+(0:ndx)];(pp、~、μ)= polyfit (t (intv) x (intv) ndx);y(性能试验:尾部)= polyval (pp、t(性能试验:尾),[],μ);结束结束

将函数添加到信号分析仪作为自定义预处理函数。在分析仪选项卡上,单击预处理▼并选择添加自定义函数.输入函数名和描述。将函数的文本粘贴到出现的编辑器窗口中。保存文件。该函数出现在预处理库中。

演示您创建的函数可以重建饱和区域。

  1. 在信号表中选择饱和信号的第一个通道。

  2. 分析仪选项卡上,单击预处理▼并选择declip

  3. 预处理选项卡,单击进行预处理

验证预处理功能工作时,信号有时间信息。

  1. 选择团体sigsat信号表中。不要选择单独的频道。

  2. 分析仪选项卡上,单击时间值中,选择采样率和开始时间,并指定fs作为采样率。

  3. 顶部面板中的信号,包括重建区域,具有时间信息。

检查当您指定可选输入时函数是否工作。

  1. 在信号表中选择饱和信号的第二个和第三个通道。

  2. 预处理选项卡上,输入8参数字段并单击进行预处理.预处理函数使用8次多项式重构饱和区域。

另请参阅

应用程序

功能

相关的例子

更多关于