matlab实现正弦内插算法(低通滤波)
一、 正弦内插概述
正弦内插算法,实质是对抽样信号的还原,利用低通滤波器的时域曲线对离散信号进行插值。
根据奈奎斯特定律,抽样频率大于原始信号的最大频率的两倍以上,则可以依据抽样后信号成功还原原始信号。而数字信号处理课程中学到,时域的离散化对应频域的周期化。通过低通滤波器,截取频域上的一个周期的函数,进行离散傅里叶反变换,即可还原原始波形。
二、正弦内插公式的推导
低通滤波器在频域上的图形表示如下,横坐标Ω为其数字角频率:
时域上的函数图形表示如下:
时域上的表达公式为(傅里叶反变换):
对上式求积分可得:
写成sinc函数形式,即为: 备注:
低通滤波器,在频域上,为原始信号的频域响应与低通滤波频域响应函数的乘积,在时域上即为原始信号与低通滤波函数h[k]的卷积。
即y[t]=x[t]*h[t],其中x[t]为需要插值的函数,h[t]为低通滤波器的时域响应函数,y[k]为滤波后的函数,即插值后的函数。卷积公式:
由于从正负无穷大内的卷积在物理上不可实现,假设插值后的离散信号的采样点的间隔周期为T,取前后合计N个离散采样点进行滤波,完成插值;假设n为离散采样点的序号,则t=nT(需要注意,x[t]的原始点保持不变,其余点置为0),因此将上述公式进行转化:
代入可得:
我们知道采样频率,采样角频率,而根据采样定理,,因此。
因此有
当时,公式写成下式:
上述公式中,仅有2个参数:采样间隔T和插值点数n。(个人认为的其余值也可,此处按照简单,不同的wc即选取了不同的低通滤波器而已)
三、MATLAB正弦内插算法实现
依据此公式,使用matlab实现正弦内插的代码如下:
%sinx/x正弦内插算法实现
a=1;
%首先模拟一个离散的正弦函数
discrete_NUM = 20;%离散函数的点数共计20个
fm=zeros(discrete_NUM,1);
for m=1:1:discrete_NUMfm(m)=sin(0.2*pi*m);%生成正弦离散函数
end
subplot(2,1,1);
stem(fm);%正弦离散函数画图展示
hold on;%正弦内插实现
interpolation_ratio = 10;%每个离散点插入10个点
after_NUM = discrete_NUM * interpolation_ratio;%插值后的波形的点数,一共200个点
y_o=zeros(after_NUM,1);%输出函数的幅度值矩阵
t_o=zeros(after_NUM,1);%输出函数的时间值矩阵
for t=0:1:after_NUM-1 %t取值范围为1~200if(mod(t,interpolation_ratio)==0) %原始离散数据位置,不计算,直接赋值t_o(t+1)=1+t/interpolation_ratio;%时间值,横坐标,t取值范围是1~200y_o(t+1)=fm(1+t/interpolation_ratio);%最终输出的幅度值 t取值范围是1~200elsey=0;for m=1:1:discrete_NUMx= pi*(t-m*interpolation_ratio)/interpolation_ratio; % ,映射离散函数的采样周期为interpolation_ratio,t为插值对应的时间,每个单位映射为1if(x==0) %x=0时,sinx/x无意义,赋值1y=y+fm(m)*1;elsey=y+fm(m)*sin(x)/x;%计算出每一个点内插数值end
%或者表达为sinc(x)的形式
% x= (t-m*interpolation_ratio)/interpolation_ratio; % ,映射离散函数的采样周期为interpolation_num,t为插值对应的时间,每个单位映射为采样周期的1/interpolation_num
% y=y+fm(m)*sinc(x);%计算出每一个点内插数值endt_o(t+1)=t/10;%时间值,横坐标,t取值范围是1~200y_o(t+1)=y;%最终输出的幅度值,纵坐标 t取值范围是1~200end
endsubplot(2,1,2);
stem(t_o,y_o);%显示插值之后的波形
hold on;
运行结果如下图。上侧为原始的离散函数,下侧为正弦内插插值后的波形。
matlab实现正弦内插算法(低通滤波)相关推荐
- 用matlab编程实现数字图像理想低通滤波、高斯低通滤波和巴特沃斯低通滤波去噪算法
1 理想低通滤波 %理想低通 I = imread('fig.png'); I=rgb2gray(I); figure(1); subplot(221),imshow(I); title('原图像') ...
- 直接数字下变频(1):低通滤波法实现
实信号的频谱包括正负频谱两部分,正负频谱共轭对称,每一部分都含有信号的全部信息,如果只对其进行单路相位检波的话,正负频谱会在零频附近发生频谱混叠:若想不发生频谱混叠,需要对实信号进行正交双路相位检波, ...
- matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21
数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...
- 在matlab环境中实现图像的傅里叶变换,matlab用傅里叶变换实现图像的低通滤波
低通滤波器指去除图像中的高频成分,而低通滤波器指去除图像中的高频成分. 考虑的有三种低通滤波器:理想滤波器.布特沃斯滤波器和高斯滤波器. 理想低通滤波器:以原点为圆心,D为半径的圆内, 无衰减地通过所 ...
- 【滤波器】基于低通滤波实现肌电信号处理含Matlab源码
1 简介 FIR数字滤波器是数字滤波器系统中常见的滤波器,本文提出FIR数字滤波器的设计方案,并基于Ma tlab实现滤波仿真.通过使用Matlab信号处理工具箱提供的函数,选择适当的窗函数编写程序, ...
- 一阶RC低通滤波算法原理与实现
文章目录 1. 一阶低通滤波算法原理 2. 一阶滤波算法的特点 3. 基本算法的例程 4. 优化:减少乘.除的运算次数以提高运算速度 5. 改进:动态调整滤波系数 动态调整滤波例程 本文整理自网络,参 ...
- matlab 对图像进行低通滤波,matlab图像处理实现低通滤波
matlab图像处理实现低通滤波 matlab图像处理实现低通滤波 clc; clear all; img=imread('lena.jpg'); img_noise = imnoise(img, ' ...
- 图像降噪算法——高斯低通滤波
图像降噪算法--高斯低通滤波 图像降噪算法--高斯低通滤波 1. 基本原理 2. C++代码实现 3. 结论 图像降噪算法--高斯低通滤波 1. 基本原理 通过离散傅里叶变换对图像进行滤波流程作非常简 ...
- 单片机ADC采样算法----一阶低通滤波
关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下: y(n) = q*x(n) + (1-q)*y(n-1) 其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...
最新文章
- linux 打包压缩工具
- js实现-限时抢购倒计时间表
- 一个SpringMVC接口能返回JSON又能返回XML? 安排!
- [家里蹲大学数学杂志]第418期南开大学2013年实变函数期末考试试题参考解答
- oracle修改参数
- mysql 重装,Windows系统中完全卸载MySQL数据库实现重装mysql
- shell脚本实现自动化备份
- 斗鱼赴美递交IPO招股书:拟登陆纽交所 融资5亿美金
- mysql 5.74安装教程_MySQL数据库作为关系型数据库中的佼佼者,因其体积小,速度快,成本低,不仅受到了市场的极大追捧,也受到了广大程序员的青睐。接下来,就给大家说一下,MySQL的...
- 博途下载触摸屏程序时提示缺少面板映像
- 嵌入式单片机高级篇(一)Stm32F103电容触摸按键
- GreenPlum数据库介绍
- CNTV视频深入挖掘分析
- 计算机病毒进化趋势,人类进化趋势是什么?
- ASP.NET Repeater控件使用方法
- 【渝粤题库】国家开放大学2021春1089现代教育思想题目
- 自制低成本3D激光扫描测距仪(3D激光雷达),第二部分
- 性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】
- Python 二分法求多项式单根
- Ubuntu安装nvm