如何在以不同速率采样的输入和输出之间找到传递函数?

时间:2014-08-04 15:51:39

标签: matlab sampling transfer-function

我了解通常在使用ftest()准备数据后我会使用iddata()。但是,要使iddata()正常工作,我需要以相同的速率对输入和输出数据进行采样。是否有iddata()的速率无关变体或任何其他方式可以让我完成我需要完成的任务?

1 个答案:

答案 0 :(得分:0)

我正在处理同样的问题(https://dsp.stackexchange.com/questions/19458/how-to-compute-transfer-function-from-experimental-data),我不确定我是否找到了这样做的方法,但我与您分享了我的想法,因此我们可能会找到适用于我们双方的解决方案(如果您已经找到了办法,请分享)。

方法1

如果您在时域中有信号,则可以同步它们,然后使用tfestimate功能。

% Define timeseries 
ts_output = timeseries(x,time1,'Name','output');
ts_input = timeseries(y,time2,'Name','input');

% Synchronization
[ts_output,ts_input] = synchronize(ts_output,ts_input,'uniform',...
'interval',delta_t);

% Compute transfer function
Fs = 1/delta_t;
[Txy,W] = tfestimate(ts_input.data,ts_output.data,[],[],[],Fs);

方法2

您可以重新采样以较低频率采样的信号,而不是同步:假设为Fs1 > Fs2

[P,Q] = rat(Fs1/Fs2);
y2 = resample(y2,P,Q);