一、 正弦内插概述

正弦内插算法,实质是对抽样信号的还原,利用低通滤波器的时域曲线对离散信号进行插值。

根据奈奎斯特定律,抽样频率大于原始信号的最大频率的两倍以上,则可以依据抽样后信号成功还原原始信号。而数字信号处理课程中学到,时域的离散化对应频域的周期化。通过低通滤波器,截取频域上的一个周期的函数,进行离散傅里叶反变换,即可还原原始波形。

二、正弦内插公式的推导

低通滤波器在频域上的图形表示如下,横坐标Ω为其数字角频率:

时域上的函数图形表示如下:

时域上的表达公式为(傅里叶反变换):

对上式求积分可得:

写成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实现正弦内插算法(低通滤波)相关推荐

  1. 用matlab编程实现数字图像理想低通滤波、高斯低通滤波和巴特沃斯低通滤波去噪算法

    1 理想低通滤波 %理想低通 I = imread('fig.png'); I=rgb2gray(I); figure(1); subplot(221),imshow(I); title('原图像') ...

  2. 直接数字下变频(1):低通滤波法实现

    实信号的频谱包括正负频谱两部分,正负频谱共轭对称,每一部分都含有信号的全部信息,如果只对其进行单路相位检波的话,正负频谱会在零频附近发生频谱混叠:若想不发生频谱混叠,需要对实信号进行正交双路相位检波, ...

  3. matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21

    数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...

  4. 在matlab环境中实现图像的傅里叶变换,matlab用傅里叶变换实现图像的低通滤波

    低通滤波器指去除图像中的高频成分,而低通滤波器指去除图像中的高频成分. 考虑的有三种低通滤波器:理想滤波器.布特沃斯滤波器和高斯滤波器. 理想低通滤波器:以原点为圆心,D为半径的圆内, 无衰减地通过所 ...

  5. 【滤波器】基于低通滤波实现肌电信号处理含Matlab源码

    1 简介 FIR数字滤波器是数字滤波器系统中常见的滤波器,本文提出FIR数字滤波器的设计方案,并基于Ma tlab实现滤波仿真.通过使用Matlab信号处理工具箱提供的函数,选择适当的窗函数编写程序, ...

  6. 一阶RC低通滤波算法原理与实现

    文章目录 1. 一阶低通滤波算法原理 2. 一阶滤波算法的特点 3. 基本算法的例程 4. 优化:减少乘.除的运算次数以提高运算速度 5. 改进:动态调整滤波系数 动态调整滤波例程 本文整理自网络,参 ...

  7. matlab 对图像进行低通滤波,matlab图像处理实现低通滤波

    matlab图像处理实现低通滤波 matlab图像处理实现低通滤波 clc; clear all; img=imread('lena.jpg'); img_noise = imnoise(img, ' ...

  8. 图像降噪算法——高斯低通滤波

    图像降噪算法--高斯低通滤波 图像降噪算法--高斯低通滤波 1. 基本原理 2. C++代码实现 3. 结论 图像降噪算法--高斯低通滤波 1. 基本原理 通过离散傅里叶变换对图像进行滤波流程作非常简 ...

  9. 单片机ADC采样算法----一阶低通滤波

    关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下:  y(n) = q*x(n) + (1-q)*y(n-1)     其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...

最新文章

  1. linux 打包压缩工具
  2. js实现-限时抢购倒计时间表
  3. 一个SpringMVC接口能返回JSON又能返回XML? 安排!
  4. [家里蹲大学数学杂志]第418期南开大学2013年实变函数期末考试试题参考解答
  5. oracle修改参数
  6. mysql 重装,Windows系统中完全卸载MySQL数据库实现重装mysql
  7. shell脚本实现自动化备份
  8. 斗鱼赴美递交IPO招股书:拟登陆纽交所 融资5亿美金
  9. mysql 5.74安装教程_MySQL数据库作为关系型数据库中的佼佼者,因其体积小,速度快,成本低,不仅受到了市场的极大追捧,也受到了广大程序员的青睐。接下来,就给大家说一下,MySQL的...
  10. 博途下载触摸屏程序时提示缺少面板映像
  11. 嵌入式单片机高级篇(一)Stm32F103电容触摸按键
  12. GreenPlum数据库介绍
  13. CNTV视频深入挖掘分析
  14. 计算机病毒进化趋势,人类进化趋势是什么?
  15. ASP.NET Repeater控件使用方法
  16. 【渝粤题库】国家开放大学2021春1089现代教育思想题目
  17. 自制低成本3D激光扫描测距仪(3D激光雷达),第二部分
  18. 性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】
  19. Python 二分法求多项式单根
  20. Ubuntu安装nvm

热门文章

  1. GO语言(golang)官方网站!
  2. 前端大串讲,狂神,狂神和飞哥
  3. 【校招VIP】前端JS语言之语法相关
  4. vue导入excel进度条_vue中使用excel导入导出
  5. 复习高数下册8-10章主要内容(简略版)
  6. 【C#语言】具名类型和匿名类型
  7. Admin.NET管理系统(vue3等前后端分离)学习笔记--持续更新
  8. 2022.11.11 CodeForces1324D Pair of Topics
  9. java软件测试基础
  10. GPT-3+DALL-E 2 = 海量带标签数据自动生成 ?