基于matlab的信号处理脚本,用于对信号的重采样。
本文实现的效果,避免了传统重采样的能量损失问题。
function Xout = LinearResample(x,f1,f2)
% f1 is original frequency;
% f2 is expected frequency;
Xout = [];
Lcoef = 0:f2/f1:length(x);
Intcoef = fix(Lcoef);
Intcoef = Intcoef(Intcoef < (length(x)-1));
Lcoef = Lcoef(Intcoef < (length(x)-1));
Fracoef = Lcoef-Intcoef;
Fracoef = Fracoef(Intcoef < (length(x)-1));
for j = 1:1:length(Lcoef)
Xout(j) = Fracoef(j)*(x(Intcoef(j)+2)-x(Intcoef(j)+1))+x(Intcoef(j)+1);
end
%%
if ~isrow(x)
Xout = Xout';
end
end