【问题标题】:Is there anyway to speed up signal processing in MATLAB?无论如何可以加快MATLAB中的信号处理?
【发布时间】:2014-01-17 19:55:40
【问题描述】:

我正在使用 MATLAB 中的 SP 工具箱进行一些无线电信号处理。由于我正在研究大量的虚拟无线电天线,我想知道是否有任何方法可以加快这个过程。

这是我通常做的:

  1. 将一些具有 3 列(实际上是 4 列,但其中一个是我以另一种方式使用它的时间)的类似 excel 的数据插入 MATLAB(无线电天线位置的 x,y,z ),我将它们分别命名为 x75, y75,z75 表示距离核心 75 米处的天线。

  2. 由于我使用命令行,所以将它们转换为另一个简单的单位

  3. 然后我使用SP工具箱将转换后的值作为信号插入,这很耗时,因为我需要一个一个插入很多!

  4. 然后我应该再次对这些信号一个一个地应用一个带 FFT 算法的带通滤波器......

  5. 然后我需要将这些滤波后的信号导出到工作区并保存 FFT 转换信号的峰值 (Y stats) 以供以后使用(我确实使用了plot 命令):

    plot(abs(fft(x75f.data)))
    

*现在想一想,如果我要为 100 个具有 x、y 和 z 坐标的无线电天线执行此操作……无论如何可以在命令行中执行这些部分吗?就像在 SP 工具箱中对转换后的值应用过滤器一样? * 有什么方法可以更快吗?*

过滤器规格:

【问题讨论】:

    标签: matlab filter signal-processing


    【解决方案1】:

    当然,GUI 通常会告诉您如何操作。例如,您已选择使用 FFT 加速滤波函数fftfilt。所以命令行版本是

    x75f = fftfilt(filt1, x75);
    

    您可以计算的统计数据,例如min, max 函数。

    您实际上是在使用滤波后的时间信号,还是仅仅使用它的 FFT?如果您只需要 FFT,那么让 fftfilt 进行逆 FFT 然后再次对其进行 FFT 是一种浪费。只需对原始 FFT 进行 FFT,然后在频域中使用乘法来应用您的滤波器。

    【讨论】:

    • 谢谢!...很好的答复,我只是在使用 FFT,但不知道如何在频域中使用乘法来应用我的滤波器!....你也可以告诉请问如何在命令行中使用 max 函数保存峰值?
    • @MohammadSobbouhi:你知道过滤器的 $H(j \omega)$ 吗?
    • 其他部分,spec = abs(fft(x75f.data)); max(spec)
    • 过滤器规范就像我添加到问题中的最后一张图片......我不确定我这样做是对还是错,但我只想过滤这些信号在32-64 MHZ频段找到频域值的峰值。
    • @MohammadSobbouhi:您当然可以使用x75insertionloss = max(spec); 将其保存到变量中。
    猜你喜欢
    • 2013-09-10
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多