使用自己的功能衰减饱和信号

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

产生一个三通道信号采样在1千赫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+1点上拟合一个ndx度的多项式%在区间前,ndx+1在区间后K = 1:size(ide,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次多项式来重建饱和区域。

另请参阅

应用程序

功能

相关的例子

更多关于