Matlab-奈奎斯特滤波器实现《二》
来源:互联网 发布:佰斯纳特 淘宝 编辑:程序博客网 时间:2024/05/21 15:23
Matlab-奈奎斯特滤波器实现《一》中编写了根升余弦滤波器的函数,其实Matlab也有自带的函数用于产生根升余弦滤波器。需要注意的是:当需要将信号通过根升余弦或者升余弦滤波器之前,注意时刻一定要相互对应。通常为了实现脉冲整形的效果,常常需要对输入信号进行IPOINT = fd/fs点内插 0 ;其中 fd为滤波器的采样频率,fs为传输数据的符号速率。
下面,图解传输的数字信号通过脉冲整形滤波器的过程:
首先,产生需要传输的数据,为了方便观察,参数的数据为:x=[1 0 1];同时,假设符号速率为sr = 256000;%传输速率
接着产生脉冲成型滤波器的时域冲击响应 xh。
在最开始有提到,若此时的输入信号 x 不进行内插零那么又会怎么样呢?下面直接将 x 和 xh 卷积看看输出的时域响应是什么:
对,可以看出来这输出的信号和输入的信号 x 差得万里!最主要的原因是: 卷积的两项时刻不对应,脉冲成型滤波器时间分辨率为:tstp = 1/(sr*IPOINT);而输入信号的时间分辨率为:ts = 1/sr。同时脉冲成型,我们希望对一个符号成型一下就ok,所以,常常对输入信号 x 内插 0 以满足相同的时间分辨率。
下面,就将输入信号内插零:
xx = zeros(1,length(x)*IPOINT);xx(1:IPOINT:end) = x;% 补零
明显可以看出,这个才是脉冲成型后我们想要的结果。
仿真源代码:
%*****************************************************%hrolllcoef_detect.m%功能:对成型滤波器的实验%Author: jdf%Date:2017-3-14%******************************************************addpath(fileparts(mfilename('full')));clc;%*******全局变量*******%*********** hrollfoef2.m 升余弦滤波器所需要的系数******N = 3; %规定实验数据alfs = 0.5;%滚降系数irfn = 21;%滤波器阶数%**********************************************IPOINT = 8;%采样点数(高于传输速率的倍数)sr = 256000;%传输速率%*******开始实验********% x = randn(1,N)>0.5;x=[1 0 1];x = 2*x-1;xh = rcosine(sr, sr*IPOINT);% xh = hrollfcoef2(irfn,8,sr,alfs); %若要仿真Matlab-奈奎斯特滤波器实现《一》中的滤波器,解除此项的注释y = conv(x,xh);xx = zeros(1,length(x)*IPOINT);xx(1:IPOINT:end) = x;% 补零yy = conv(xx,xh);mid = length(xh)/2;tt = ([0 :length(xh)-1]-mid)/7;%将中点mid放置在0的位置try clf(21)catch me disp(me);endfigure(21);%*******画图****************************************************subplot(221);plot(x,'ro-');grid on; xlabel('Time');ylabel('Amplitude');title('Transmission Data');subplot(222);plot(tt,xh,'ro-');grid on; xlabel('Time(t/Ts)');ylabel('Amplitude');title('filter impulse response');set(gca,'xtick',[-6:1:6]);xlim([-6 6]);subplot(223);plot(y,'ro-');grid on; xlabel('Time');ylabel('Amplitude');title('passed filter without IPOINT oversample');subplot(224);plot(yy,'ro-');grid on; xlabel('Time');ylabel('Amplitude');title('passed filter with IPOINT oversample');hold on;plot([floor(length(xh)/2) floor(length(xh)/2)],[-2 2],'b--','LineWidth',2);plot([length(yy)-floor(length(xh)/2) length(yy)-floor(length(xh)/2)],[-2 2],'b--','LineWidth',2);%****************************end of file **************************
1 0
- Matlab-奈奎斯特滤波器实现《二》
- Matlab-奈奎斯特滤波器实现《一》
- Matlab实现Butterworth滤波器
- matlab中实现Gabor滤波器
- matlab中实现Gabor滤波器
- matlab中实现Gabor滤波器
- FIR滤波器的Matlab实现
- kalman 滤波器及其MATLAB实现
- 基于模型设计的FPGA开发与实现:滤波器设计与实现(二)Matlab中滤波器的定点化
- 二相并行FIR滤波器的matlab及使用FIR IP 核的FPGA实现
- 设计巴特沃思滤波器matlab实现[转载]
- 拉普拉斯差分滤波器模板实现+MATLAB
- MATLAB实现卡尔曼滤波器(KF、EKF)
- 双边滤波器原理及其matlab实现
- 双边滤波器原理及Matlab实现
- MATLAB滤波器
- matlab 滤波器
- 二阶IIR滤波器 利用Matlab求解级/并联结构
- 学术笔记·人口老龄化与认识反思·十四
- 数据结构复习之序
- word-break
- 一元多项式的相加
- 宏观介绍React
- Matlab-奈奎斯特滤波器实现《二》
- Maven的使用
- jquery插件开发学习笔记(七)——页面平滑滚动改进
- HTML学习笔记2
- 【js实现】在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次
- IT健康小贴士
- linux下gcc默认搜索头文件及库文件的路径
- JVM学习(4)-垃圾回收算法
- poj1007 -- DNA Sorting