主要内容

使用自己的函数衰减饱和信号

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

生成一个采样频率为1千赫的双通道信号,持续14秒。信号有几个不同大小和形状的峰值。读取信号的传感器饱和在0.1 V。

Fs = 1000;T = 0:1/fs:14-1/fs;Sig = [chirp(t-1,0.1,17,2,“二次”1)。*罪(2 *π* t / 5);0.85 * besselj(0、5 *(罪(2 *π* (t + 1.5)。^ 2/20)。^ 2))。*罪(2 *π* t / 9)];Sigsat = sig;STV = 0.1;Sigsat (Sigsat >= stv) = stv;

开放信号分析仪将原始信号和饱和信号拖到“信号”表中。将每个信号的第一个通道拖动到顶部显示,并将每个信号的第二个通道拖动到底部显示。

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

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

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

  • 使用变长度输入宗量指定额外的输入参数。如果没有其他输入参数,可以省略变长度输入宗量.中以逗号分隔的有序列表形式输入附加参数函数参数面板内部的预处理模式。

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

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

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

函数[y,tOut] = declip(x,tIn,varargin)衰减饱和信号拟合多项式初始化输出信号Y = x;对于没有时间信息的信号,用样本号作为横坐标如果isempty(tIn) tOut = [];T =(1:长度(x))';其他的t = tIn;tOut = t;结束指定多项式的次作为可选输入参数%,并提供默认值4如果Nargin <3 NDX = 4;其他的NDX = varargin{1};结束要实现您的算法,您可以使用任何MATLAB或Signal工具箱功能找到信号饱和的间隔,并生成一个包含间隔端点的%数组Idx = find(x= max(x));Fir = [true;diff(idx) =1];Ide = [idx(fir) idx(fir([2:end 1]))];对于每个区间,拟合ndx次多项式对ndx+1点%,间隔后的ndx+1点K = 1:size(ide,1) bef = ide(K,1);Aft = ide(k,2);Intv = [bef-1+(-ndx:0) aft+1+(0:ndx)];[pp,~,mu] = polyfit(t(intv),x(intv),ndx);Y (bef:aft) = polyval(pp,t(bef:aft),[],mu);结束结束

将函数添加到信号分析仪作为自定义预处理函数。选择sigsat的信号表中分析仪选项卡上,单击进行预处理进入预处理模式。在功能画廊,选择添加自定义功能.输入函数名和描述。将函数文本粘贴到出现的编辑器窗口中。保存文件。函数出现在自定义函数列于功能画廊。

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

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

  2. 功能画廊,选择declip

  3. 函数参数面板中,单击应用

  4. 点击接受所有

添加时间信息。

  1. 选择团体而且sigsat在信号表中。不要选择单独的通道。

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

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

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

  2. 点击进行预处理,并选择declip功能画廊。在函数参数面板中,输入8参数字段并单击应用.预处理函数使用8次多项式来重建饱和区域。

  3. 点击接受所有

另请参阅

应用程序

功能

相关的例子

更多关于

Baidu
map