3.127 FAQ-750 如何计算两个信号之间的传播延迟时间?
Last Update: 7/22/2018
假设我们有两个时变信号:信号和 延迟信号,数据分别保存在工作表列(B),列(D) 中。
假设我们要计算两个信号之间的传播延迟,模型可以设置如下,其中 f(t) 是原始信号,而 g(t) 是延迟信号。
对于所有
,
是常数.
然后,我们将使用非线性曲线拟合来计算
,,可以用一下这种方法来构建用户定义的拟合函数:
图中显示的
接近0.8,因此以0.8 作为拟合的初始值。
Function Name: fitdelay Function Type: User-Defined Independent Variables: x Dependent Variables: y Parameter Names: t0 Function Form: Origin C Function: #include <origin.h> // #include <ONLSF.H> // void _nlsffitdelay1( // Fit Parameter(s): double t0, // Independent Variable(s): double x, // Dependent Variable(s): double& y) { // Beginning of editable part NLFitContext *pCtxt = Project.GetNLFitContext(); Worksheet wks; DataRange dr; int c1,c2; dr = pCtxt->GetSourceDataRange(); //Get the source data range dr.GetRange(wks, c1, c2); //Get the source data worksheet if ( pCtxt ) { static vector vX, vY; static double nSize; BOOL bIsNewParamValues = pCtxt->IsNewParamValues(); if ( bIsNewParamValues ) { Dataset dsx(wks, 0); Dataset dsy(wks, 1); vX = dsx; vY = dsy; nSize = vY.GetSize(); } double x1; x1 = x-t0; ocmath_interpolate( &x1, &y, 1, vX, vY, nSize ); } // End of editable part }
关于构建用户定义拟合函数的详细步骤,请参考 此页面
拟合曲线
在拟合函数主体中,我们会从当前工作表中直接读取响应数据。 因此,您应该从工作表中执行拟合。 打开一个新工作簿,并导入文件\ Samples \ Curve Fitting \ DelaySignal.dat
- 选中列 C,按 Ctrl + Y 打开 Nonlinear Fitting 对话框。
- 选择 Function Selection 页,选择刚刚定义的 fitdelay 函数
- 点击 Fit 按钮,输出结果。
Keywords:Nonlinear Curve Fit, Signal Process,非线性曲线拟合,信号处理

