我有一个大矢量的记录数据,我需要重采样。我遇到的问题是,当使用resample时,我会得到以下错误:
???在82处使用==> upfirdn的误差,下采样因子q和上采样因子P的乘积必须小于2^31。
现在,我明白为什么会发生这种情况--我的两个抽样率非常接近,所以整数因子需要相当大(大约是73999/74000)。不幸的是,这意味着MATLAB无法创建适当的过滤器。我也尝试过重采样,但没有足够的内存来处理100万个数据样本(我的内存是9300万)。
我还能用什么其他方法来正确地重新整理这些数据呢?
发布于 2014-11-03 23:56:59
一个插值的多相FIR滤波器可以用于只插值新的样本点集,而不需要使用upsampling+downsampling过程。
但是,如果性能完全不重要,下面是一个Basic中的快速和肮脏窗口-Sinc插值。
发布于 2022-09-22 12:12:57
这是我的代码,希望它能帮上忙:
function resig = resamplee(sig,upsample,downsample)
if upsample*downsample<2^31
resig = resample(sig,upsample,downsample);
else
sig1half=sig(1:floor(length(sig)/2));
sig2half=sig(floor(length(sig)/2):end);
resig1half=resamplee(sig1half,floor(upsample/2),length(sig1half));
resig2half=resamplee(sig2half,upsample-floor(upsample/2),length(sig2half));
resig=[resig1half;resig2half];
endhttps://stackoverflow.com/questions/26721557
复制相似问题