我是 DSP 新手,目前正在尝试在 matlab 中实现一个简单的多相抽取程序。
M 是抽取因子,x 是输入(现在是方波 8096 个样本),y_polyDec 是多相的结果,输出是常规滤波器然后抽取的结果。
代码 :
FilterBank_LPF = fir1(127, 1/M);
y_polyDec = zeros(8096/M, 1);
for i = 1:M
p(:, i) = FilterBank_LPF(i:M:end);
x(:, i) = input(M-i+1:M:end);
y_polyDec = filter(p(:, i), 1, x(:, i))+ y_polyDec;
end
out_LPF = filter(FilterBank_LPF, 1, input);
output = downsample(out_LPF, M);
%===========================================
如果我比较“输出”和“y_polyDec”(使用 fvtool 比较抽取的样本值或频谱),我注意到值存在差异。我想知道我的代码是否错误,或者我仍然遗漏了什么。
谢谢