关于升余弦滤波器,matlab中可以用fdatool生成,也可以自己调用函数
rcosine,rcosfir,rcosflt生成。
下面先贴出matlab中rcosfir的公式
rcosfir中的公式
% The time response of the raised cosine filter is,
%
% h(t) = SINC(t/T) COS(pi R t/T)/(1 - 4 R^2 t^2 /T^2)
% The frequency domain has the spectrum
%
% / T when 0 < |f| < (1-r)/2/T
% | pi T 1-R T 1-R 1+R
% H(f) = < (1 + cos(----) (|f| - ----) --- when --- < |f| < ---
% | r 2T 2 2 T 2 T
% \ 0 when |f| > (1+r)/2/T
%
%
% T is the input signal sampling period, in seconds. RATE is the
% oversampling rate for the filter (or the number of output samples per input
% sample). The rolloff factor, R, determines the width of the transition
% band. R has no units. The transition band is (1-R)/(2*T) < |f| <
% (1+R)/(2*T).
%
% N_T is a scalar or a vector of length 2. If N_T is specified as a
% scalar, then the filter length is 2 * N_T + 1 input samples. If N_T is
% a vector, it specifies the extent of the filter. In this case, the filter
% length is N_T(2) - N_T(1) + 1 input samples (or
% (N_T(2) - N_T(1))* RATE + 1 output samples).
%
直接用这两个生成的例子,摘自无线通信fpga设计,改了一下注释和图
添加了网友关于阶数,群延时以及
Fd = 1; % 输入信号的采样率
Fs = 8; % 输出信号的采样率
Delay = 3 % 滤波器的群时延
N = Delay*(Fs/Fd)*2 % 滤波器的阶数
M = Delay*(Fs/Fd)*2+1; % 滤波器的系数个数
R = 0.125; % 滚降因子
[yf,tf] = rcosine(Fd,Fs,'sqrt',R,Delay);
plot(yf);
grid on;
xlabel('Time')
ylabel('Amplitude');
% impz(rrcfilter,1); % 画冲激响应
x=rand(100,1); % 产生随机信号
xt=zeros(1,800); % 对输入信号后面补零
xt(1:8:end)=x;
y=filter(yf,tf,xt); % 经过升余弦滤波器
yt=y((length(yf)+1)/2:8:end); % 下采样,去除滤波器的抽头时延
figure;
subplot(2,1,1);
stem(x(1:40),'.');
title('INPUT : x');
subplot(2,1,2);
stem(yt(1:40),'-');
title('OUTPUT : y');
% 1. Fd 信息速率 Rb
% 2. Fs / Fd就是采样率,也就是一个码元几个样点.
% 3. 阻带不用设置!因为设计的是升余弦滤波器,主要作用是用于波形成形,
% 而不是滤出落在阻带的信号.这个你可以查一下升余弦滤波器的特性,
% 很多通信书上都有的,一般在数字信号的基带传输一部分.
% 4. num的长度就是delay * (Fs / Fd) * 2 + 1,也就是说
% 滤波器的阶数是delay * (Fs / Fd) * 2 ,
% 系数个数是delay * (Fs / Fd) * 2 + 1.
% 5. 根号升余弦是用在波形成型上的,原始输入的序列都是
% 德尔塔序列,经过根号升余弦后,脉冲成型。即把原来用作成型的
% 低通滤波器换成根号升余弦滤波器就就可以了,如果不换的话,
% 用理想低通做成型滤波器,时域则由德尔塔序列变为SINC函数序列,
% 这样实际也可以做到无码间干扰,只要你的低通滤波器的截至频率是1/Ts。
% 6. 在调制解调中加入余弦滤波器的意义,可以提高频带的利用率,
% 降低码间干扰,而这些与调制解调并不冲突
% 7. 根升余弦滤波的作用
% 数字基带调制后,必须经过脉冲成型,才能调制到载频进行发射。
% 因为理想的矩形脉冲(理想的无ISI)不可能实现,所以用升余弦函数
% 脉冲替代,保证采样时刻无ISI影响。通常在收发两端各用一个根
% 升余弦滤波器,实现系统响应的升余弦特性。升余弦函数仅保证数字
% 调制解调及采样无ISI影响,接收机还要考虑信道多径引入的ISI影响。
% 某些情况下,根升余弦滤波器同时可用作基带低通滤波器;但如果
% 对频带有限制要求,可以用ISI受控的部分响应系统函数来实现低通滤波。
我的理解:
用matlab自带的函数生成的滤波器系数是个定值,即阶数+1,如果我们需要
多个系数,即阶数一定,但是每个tap要去多个系数的话应该用滤波器的公式
自己生成。暂时是这么理解的,可能还有简单的方法。
这个是我用来生成多个升余弦系数的公式。不知道和自带的那个差别情况。
|
本文地址:http://114er.blogspot.com/2010/12/blog-post_02.html 原创文章如转载,请注明链接: 转自Welcome Funny Guys |

0 评论: