您的位置:首页 > 其它

任意采样率变化的简单处理

2015-08-28 09:30 204 查看
由于没有什么时间编写解释部分,详细查看源代码:

function [Out] = SampChang(In,OldSamp,NewSamp)
len = length(In);
oldInterval = 1/OldSamp;
newInterval = 1/NewSamp;
data = zeros(1,len*NewSamp/OldSamp);
if(OldSamp > NewSamp)
Fp=NewSamp/2; % 通带
Fs=OldSamp; % 采样频率
Rs=60; % 阻带衰减为60dB
Wn=Fp*2/Fs;
% 切比雪夫II型滤波器
[C2b C2a]=cheby2(10,Rs,Wn,'low'); % 调用MATLAB cheby2函数快速设计低通滤波器
tmp=filter(C2b,C2a,In); % 进行低通滤波

temp = 0;
for(i=0:1:length(data)-1)
for(k=temp:1:len-2)
if(k*oldInterval <= i*newInterval && (k+1)*oldInterval >= i*newInterval)
k2 = (tmp(k+2) - tmp(k+1))/oldInterval;
d2 = tmp(k+2) - k2*(k+1)*oldInterval;
data(i+1) =  k2*i*newInterval + d2;
temp = k;
end
end
end
elseif(OldSamp < NewSamp)
temp = 0;
for(i=0:1:length(data)-1)
for(k=temp:1:len-2)
if(k*oldInterval <= i*newInterval && (k+1)*oldInterval >= i*newInterval)
k2 = (In(k+2) - In(k+1))/oldInterval;
d2 = In(k+2) - k2*(k+1)*oldInterval;
data(i+1) =  k2*i*newInterval + d2;
temp = k;
end
end
end
Fp=OldSamp/2; % 通带
Fs=NewSamp; % 采样频率
Rs=60; % 阻带衰减为60dB
Wn=Fp*2/Fs;
% 切比雪夫II型滤波器
[C2b C2a]=cheby2(10,Rs,Wn,'low'); % 调用MATLAB cheby2函数快速设计低通滤波器
data=filter(C2b,C2a,data); % 进行低通滤波
end
Out = data;
end


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: