【问题标题】:Matlab: resampling a non-uniform sampled signalMatlab:重新采样非均匀采样信号
【发布时间】:2016-09-29 07:32:39
【问题描述】:

我有 3 个信号:用于化学过程的 2 个输入和 1 个输出。 2 个输入每分钟均匀采样,而输出应每 30 分钟精确采样一次,我有时每 40 分钟或 50 分钟采样一次……

我的输出信号只关心 30 分钟的采样输入,而不是超过那个,即每个输入对 0 到 30 分钟的输出都有一个总响应。

如何重新采样 Matlab 中的所有内容,使其成为一系列 30 分钟的时间块间隔?

【问题讨论】:

    标签: matlab signal-processing


    【解决方案1】:

    您想要做的是插值。在一维中做到这一点的基本方法是使用interp1。首先阅读the methods 并确定哪种方法最适合您的需求。

    假设val 是您的数据点,t 是数据采集时间的向量。您可以在时间向量T 上插入数据,如下所示:

    t = [0 40 80 120 170 220 270];
    val = rand(1, 7);
    T = min(t):30:max(t);
    Method = 'pchip'; % or whatever you prefer
    vq = interp1(t, val, T, Method);
    

    这是输出 vq 的样子:

    【讨论】:

      【解决方案2】:

      这似乎是一个过程控制系统,你应该使用 symulink 认为:

      http://es.mathworks.com/company/newsletters/articles/modeling-industrial-chemical-processes-with-matlab-and-simulink-at-hugo-petersen-gmbh.html

      这是一个过程控制的pdf教程:

      http://homepages.lboro.ac.uk/~cgzkn/processcontrol/simulink4controlnewsinglepage.pdf

      提出您的问题,在您的情况下,您可以在 matlab 中使用resample,(还要注意信号的混叠)

      y = resample(x,p,q) 以 p/q 乘以 原始采样率。如果 x 是一个矩阵,则 resample 处理每个 x 列作为独立通道。重采样应用 抗混叠 FIR 低通滤波器到 x 并补偿延迟 由过滤器引入。

      所以你有一个信号需要重新采样 30 fs1/fs2 ((1/60) / (1/(60*30)) = 30,在这种情况下你可以这样做:

      OutputResampled = resample(outputSignal,30,1)
      

      【讨论】:

      • Simulink 与这个问题有什么关系……?
      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2018-12-27
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多