フィルターのクリア

dsp.FIRRateConverter doesn't handle large ratios?

2 ビュー (過去 30 日間)
Martin Ryba
Martin Ryba 2023 年 5 月 24 日
回答済み: Raghav 2023 年 8 月 4 日
I have some long data vectors that need to be resampled at a (precise) ratio of 576/625 (going from 8.3333 Msps to 7.68 Msps). The resample() function works fine with these values for short segments, but I run out of memory with large sets. If I absolutely have to I can deal with glitches between segments but I shouldn't need to. Anyway, when I used filterBuilder to build the equivalent dsp.FIRRateConverter, it appears the polyphase filter construction isn't done right and it defined a prototype filter of insufficient order such that it doesn't properly handle the large interpolate stage. So, the output signal is a hash, mostly zeros with occasional "spikes" where something gets through. I could try dsp.FarrowRateConverter which is apparently a polynomial interpolator, or should I be using dsp.SampleRateConverter?

回答 (1 件)

Raghav
Raghav 2023 年 8 月 4 日
Hi Martin,
If you are encountering memory issues when using the resample() function with large sets, there are alternative approaches you can consider to achieve the desired resampling ratio of 576/625 (from 8.3333 Msps to 7.68 Msps). Two of them being:
  1. dsp.FarrowRateConverter: This is a polynomial interpolator that can be used for resampling. It offers more flexibility than resample() and can handle non-integer resampling ratios. However, it might require more computational resources.
  2. dsp.SampleRateConverter: This is a more advanced resampling technique. It provides high-quality resampling with efficient memory usage. The “dsp.SampleRateConverter” object allows you to specify the resampling ratio precisely and provides various options for filter design and implementation.
To choose between “dsp.FarrowRateConverter” and “dsp.SampleRateConverter”, consider the following:
  • If you need a more flexible approach and can handle the computational requirements, try “dsp.FarrowRateConverter”.
  • If memory efficiency is crucial and you want high-quality resampling, consider using “dsp.SampleRateConverter”.
You can experiment with both approaches to determine which one suits your requirements best.
Hope it helps,
Best Regards,
Raghav Bansal
MathWorks Technical Support

カテゴリ

Help Center および File ExchangeMultirate Signal Processing についてさらに検索

タグ

製品


リリース

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by