升余弦滤波器MATLAB分析
作用
升余弦滤波器常常作为发送端的成型滤波器,用来抑制信号带外辐射。
MATLAB实现
在maltab中,主要用rcosdesign函数来实现FIR脉冲成型滤波器,其他相关的函数还有comm.RaisedCosineTransmitFilter,comm.RaisedCosineTransmitFilter。
语法:
b = rcosdesign(beta,span,sps)
b = rcosdesign(beta,span,sps,shape)
描述:
b = rcosdesign(beta,span,sps)返回系数b,对应于一个滚降系数为beta的均方根升余弦FIR滤波器。滤波器截断为span个symbols,每个symbol包含sps个采样点。滤波器的阶数sps*span必须是偶数。滤波器能量为1。
b = rcosdesign(beta,span,sps,shape)返回一个均方根升余弦滤波器(shape为'sqrt')或者一个升余弦滤波器(shape为'normal')。
升余弦滤波器的例子
升余弦可以抑制码间干扰,发送和接收滤波器分开。
升余弦滤波器的主要参数是其滚降系数,滚降系数直接决定了滤波器的带宽。理想的升余弦滤波器由无限多个抽头。因此,实际上的升余弦滤波器是加窗的。窗的长度由FilterSpanInSymbols特性来控制。在本例中,我们将窗长度设定为6个symbol长度。这样的滤波器也有3个symbol的群延时。升余弦滤波器用在信号上采样后的脉冲成型。因此,我们也需要指定上采样倍数。升余弦滤波器的参数如下:
Nsym=6;
beta=0.5;
samsPerSym=8;
用升余弦发射滤波器系统结构体构建滤波器并用fvtool来可视化滤波器特性。
rctFilt = comm.RaisedCosineTransmitFilter(...'Shape', 'Normal', ...'RolloffFactor', beta, ...'FilterSpanInSymbols', Nsym, ...'OutputSamplesPerSymbol', sampsPerSym) % Visualize the impulse response fvtool(rctFilt, 'Analysis', 'impulse')
这个结构体设计了一个直接型多项式单位能量FIR滤波器。滤波器阶数Nsym*sampsPerSym,抽头数Nsym*sampsPerSym+1。可以利用gain特性归一化滤波器系数以使滤波后的和未滤波数据匹配。
% Normalize to obtain maximum filter tap value of 1 b = coeffs(rctFilt); rctFilt.Gain = 1/max(b.Numerator);% Visualize the impulse response fvtool(rctFilt, 'Analysis', 'impulse')
升余弦滤波器的时域脉冲响应表示
由于8倍过采样,在符号采样点0处为最大值,在其他nTs处其采样值为0。
升余弦滤波器的群延时是恒定值,因为脉冲响应是对称的。其群延时大小是其初始时间和峰值响应时间之差,如下图:
升余弦滤波器脉冲成型
我们产生一个双极性数据序列,然后在不引入ISI情况下用升余弦滤波器进行波形成型。
DataL = 20; % Data length in symbols R = 1000; % Data rate Fs = R * sampsPerSym; % Sampling frequency% Create a local random stream to be used by random number generators for % repeatability hStr = RandStream('mt19937ar', 'Seed', 0);% Generate random data x = 2*randi(hStr, [0 1], DataL, 1)-1; % Time vector sampled at symbol rate in milliseconds tx = 1000 * (0: DataL - 1) / R;
下图画出了源数据和插值后的信号。很难比较这两个信号由于滤波器峰值响应由滤波器群延时Nsym/(2*R)延后了。需要指出的是,我们在输入X后添加Nsym/2个0以使滤波器有用采样点都输出。
% Filter yo = rctFilt([x; zeros(Nsym/2,1)]); % Time vector sampled at sampling frequency in milliseconds to = 1000 * (0: (DataL+Nsym/2)*sampsPerSym - 1) / Fs; % Plot data fig1 = figure; stem(tx, x, 'kx'); hold on; % Plot filtered data plot(to, yo, 'b-'); hold off; % Set axes and labels axis([0 30 -1.7 1.7]); xlabel('Time (ms)'); ylabel('Amplitude'); legend('Transmitted Data', 'Upsampled Data', 'Location', 'southeast')
接下来步骤通过延后输入信号对升余弦滤波器群延时进行了补偿。现在容易看出升余弦滤波器如何上采样和对信号滤波。
% Filter group delay, since raised cosine filter is linear phase and % symmetric. fltDelay = Nsym / (2*R); % Correct for propagation delay by removing filter transients yo = yo(fltDelay*Fs+1:end); to = 1000 * (0: DataL*sampsPerSym - 1) / Fs; % Plot data. stem(tx, x, 'kx'); hold on; % Plot filtered data. plot(to, yo, 'b-'); hold off; % Set axes and labels. axis([0 25 -1.7 1.7]); xlabel('Time (ms)'); ylabel('Amplitude'); legend('Transmitted Data', 'Upsampled Data', 'Location', 'southeast')
滚降系数
这个步骤给出了改变滚降系数(0.5-->0.2)带来的效果。滚降系数变小使滤波器有更窄的变化带导致滤波后信号过冲变大。
滚降系数表示超出理论奈奎斯特带宽那部分带宽,当滚降系数为0则变成了理想矩形,滚降系数为1则为占用两倍奈奎斯特带宽的升余弦滤波器。
% Set roll-off factor to 0.2 rctFilt2 = comm.RaisedCosineTransmitFilter(...'Shape', 'Normal', ...'RolloffFactor', 0.2, ...'FilterSpanInSymbols', Nsym, ...'OutputSamplesPerSymbol', sampsPerSym); % Normalize filter b = coeffs(rctFilt2); rctFilt2.Gain = 1/max(b.Numerator); % Filter yo1 = rctFilt2([x; zeros(Nsym/2,1)]); % Correct for propagation delay by removing filter transients yo1 = yo1(fltDelay*Fs+1:end); % Plot data stem(tx, x, 'kx'); hold on; % Plot filtered data plot(to, yo, 'b-',to, yo1, 'r-'); hold off; % Set axes and labels axis([0 25 -2 2]); xlabel('Time (ms)'); ylabel('Amplitude'); legend('Transmitted Data', 'beta = 0.5', 'beta = 0.2',...'Location', 'southeast')
均方根升余弦滤波器
升余弦滤波器的典型应用是将滤波器分为发送和接收。发送端和接收端都使用根升余弦滤波器。发送和接收滤波器结合起来等效于升余弦滤波器导致了可忽略不计的ISI。
% Design raised cosine filter with given order in symbols rctFilt3 = comm.RaisedCosineTransmitFilter(...'Shape', 'Square root', ...'RolloffFactor', beta, ...'FilterSpanInSymbols', Nsym, ...'OutputSamplesPerSymbol', sampsPerSym);
数据流升采样然后在发送端用根升余弦滤波器滤波。
% Upsample and filter. yc = rctFilt3([x; zeros(Nsym/2,1)]); % Correct for propagation delay by removing filter transients yc = yc(fltDelay*Fs+1:end); % Plot data. stem(tx, x, 'kx'); hold on; % Plot filtered data. plot(to, yc, 'm-'); hold off; % Set axes and labels. axis([0 25 -1.7 1.7]); xlabel('Time (ms)'); ylabel('Amplitude'); legend('Transmitted Data', 'Sqrt. Raised Cosine', 'Location', 'southeast')
发送信号然后再接收端经过滤波。单位能量归一化保证发送接收等效滤波器和单位能量归一化升余弦滤波器相同。滤波接收信号等效于信号直接经过一个单独的升余弦滤波器。
% Design and normalize filter. rcrFilt = comm.RaisedCosineReceiveFilter(...'Shape', 'Square root', ...'RolloffFactor', beta, ...'FilterSpanInSymbols', Nsym, ...'InputSamplesPerSymbol', sampsPerSym, ...'DecimationFactor', 1); % Filter at the receiver. yr = rcrFilt([yc; zeros(Nsym*sampsPerSym/2, 1)]); % Correct for propagation delay by removing filter transients yr = yr(fltDelay*Fs+1:end); % Plot data. stem(tx, x, 'kx'); hold on; % Plot filtered data. plot(to, yr, 'b-',to, yo, 'm:'); hold off; % Set axes and labels. axis([0 25 -1.7 1.7]); xlabel('Time (ms)'); ylabel('Amplitude'); legend('Transmitted Data', 'Rcv Filter Output',...'Raised Cosine Filter Output', 'Location', 'southeast')
升余弦滤波器MATLAB分析相关推荐
- matlab中升余弦滚降滤波器_升余弦滤波器 matlab代码
关于信号波形成型: 中国通信网-无限分享-|M?9Y8]v!{"K(\ 升余弦滤波器 中国通信网-无限分享+C9R3qFUH8}HZ (1) 升余弦滤波器的 matlab函数 -- ...
- matlab中升余弦滤波器产生函数rcosdesign
直接来描述一下: b = rcosdesign(beta,span,sps,shape) beta: 滚降系数,取值0~1之间,决定频宽和陡峭程度.取值一般大于0.2. span: 表示截断的符号范围 ...
- 升余弦滤波器的作用和产生
一直很想深入学习滤波器方面的知识,图书馆也去借了书然后准备看,结果就是:然后就没有然后了.DSP一直是自己的短板,因为这里面感觉小的技巧好多,而且都需要自己去琢磨,像滤波器这种东西,我脑海里也只有少的 ...
- 关于奈奎斯特准则和升余弦滤波器理解
之前一直把采样定理和第一准则搞混在一起,这次仔细研究了一下. 首先是升余弦滤波器提出背景: 为了通过信道传输,信号必须是带限的,所以需要低通滤波. 为了满足无isi,滤波器需要满足一定的条件 那么,滤 ...
- 升余弦滤波器与根升余弦滤波器
1 升余弦滚降滤波器有啥用? 1, 升余弦滚降滤波器本质上只是一个低通滤波器,只不过它的滚降因子(rolloff effect)会对波形的幅度产生一定影响,一般是降低了波形的幅度并且低通,2. 升余弦 ...
- 升余弦和根升余弦滤波器(SRRC,RRC)的单位脉冲响应
本博客详细讲述了升余弦和根升余弦滤波器的频域和时域表达式,最后给出了单位脉冲响应的Python 实现. 升余弦滤波器 升余弦滤波器(Raised-cosine filter)是一种经常作脉冲成型滤波器 ...
- 根升余弦滤波器的作用
根升余弦滤波的作用 数字基带调制后,必须经过脉冲成型,才能调制到载频进行发射. 因为理想的矩形脉冲(理想的无ISI)不可能实现,所以用升余弦函数脉冲替代,保证采样时刻无ISI影响. 通常在收发两端各用 ...
- 平方根升余弦滚降滤波器matlab函数,平方根升余弦滚降数字滤波器的设计和实现.pdf...
2005耳第g期 中图分类号:TN713文献标识码:A 文章编号:1009-2552(2005)09-0058-03 平方根升余弦滚降数字滤波器的设计与实现 文安平 (武汉科技大学信息科学与工程学院, ...
- 用matlab绘制升余弦函数
在数字通信中涉及到滤波器这一块,常常会接触到升余弦函数的使用(滚降).以下这段程序展示了如何用matlab画出一个升余弦函数的图像.通过改变不同的升降系数能得到不同的滤波器特性. function g ...
最新文章
- 8月12笔记-安卓文件扫描
- 读写属性/if判断那点事/数组
- 字符串,那些你不知道的事
- 世界各地奇葩讨债方法,竟百发百中
- 设置 iOS 应用的图标和名称
- static与get属性的作用
- Linux配置防火墙
- c 语言 封装dll_C#封装YOLOv4算法进行目标检测
- vue之生命周期(beforeCreate,created,beforeMount,mounted,beforeUpdate,updated)
- Windows2012安装AppFabric失败返回1603错误的解决方案
- 《完全写作指南》晨读笔记
- SPSS调节效应分析插件 v1.1.1
- 怎样批量修改图片尺寸?
- 华为防火墙配置(双机热备)
- 红警代码开源了 来瞅瞅源码 文内送Win10可联机的红警2标准版游戏
- nodejs之utility,crypto使用
- ctf解密图片得到flag_CTF中图片隐写的一些整理总结
- 聚播群控微信二次开发sdk完整API
- C语言(谭浩强版本,主讲人:小甲鱼)P1-P9
- win11电脑锁定触摸板或无鼠标打开触摸板