resample matlab实现
使用线性插值实现sample rate转换。
function output = simpleResample(input, inputfs, outputfs)
inputLen = length(input(:, 1));
outputLen = floor(inputLen * outputfs / inputfs);
output = zeros(outputLen, 1);
timeStep = inputfs / outputfs;
curTime = 1;
integer = 0;
frac = 0;
for i = 1:1:outputLen
integer = floor(curTime)
frac = curTime - floor(curTime);
if integer + 1 < inputLen
output(i, 1) = input(integer, 1) + frac * ( input(integer + 1, 1) - input(integer, 1));
end
curTime = curTime + timeStep;
end
win = fir1(13, 0.6, 'low')
output = filter(win, 1, output);
end
使用sinc window实现sample rate转换,可能sinc window 没有设计好,效果不是很好。
function ouput = myResample( input, inputfs, outputfs)
inputLen = length(input(:, 1));
outputLen = floor(inputLen * outputfs / inputfs);
output = zeros(outputLen, 1);
timeStep = inputfs / outputfs;
factor = outputfs / inputfs;
L = 8;%entries per zero-crossing
Nz = 7;%number of zero-crossing
winLen = 2 * L * Nz + 1;
filterInt = 4;
filterLen = floor(winLen / filterInt);
%generate sinc window function
for i = ceil(-winLen/2) :1 : floor(winLen/2)
winIdx = i + floor(winLen/2) + 1;
tmp = pi * double(i) / L;
if i == 0
win(winIdx) = 1;
else
win(winIdx = sin(tmp)/tmp;
end
end
win = win * 0.6;
%add delay before input
delaySample = floor(filterLen / 2);
delayInput = zeros(inputLen + delaySample, 1);
delayInput(delaySample + 1 : inputLen + delaySample, 1) = input(:, 1);
curTime = 1;
t = 1;
pos = 1;
for t = 1:1:outputLen
integer = floor(curTime)
frac = curTime - floor(curTime);
filtOfsset = floor(frac * filterInt);
if integer + filtLen - 1 < inputLen + delaySample
pos = integer;
winStart = floor(winLen / 2 - filterInt * filterLen / 2) - 1;
winEnd = floor(winLen /2 + filterInt * filterLen / 2);
%filter by sinc window
for j = winStart : 1 : winEnd
if j - filtOffset < 1
winCoeff = 0;
else
winCoeff = win(j - filtOffset);
end
output(t, 1) = output(t, 1) + winCoeff * delayInput(pos, 1);
pos = pos + 1;
end
end
curTime = curTime + timeStep;
end
end
resample matlab实现的更多相关文章
- Resample the mask
我们所用功能像和mask的size不同时,我们首先要对mask进行resample,令其和功能像的size相同才可以. 根据严超赣老师的回复,有三种方法:http://restfmri.net/for ...
- matlab numpy equivalents
THIS IS AN EVOLVING WIKI DOCUMENT. If you find an error, or can fill in an empty box, please fix it! ...
- 《DSP using MATLAB》示例 Example 9.6
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 基于MATLAB的语音信号处理
一.图形界面设计 1.新建GUI界面 2.新建空白页 3.命名为"yydsp",打开界面 4.拖放控件 5.按预定功能修改界面 6.填写Callback函数 未填写前的代码: fu ...
- 机器学习技法实现(一):AdaBoost- Decision Stump (AdaBoost - 决策树的基于Matlab的实现)
经过前面对AdaBoost的总结,下面要基于Matlab实现AdaBoost-Stump进行二维平面数据点的分类的实验. 一. 实验原理 参看 http://blog.csdn.net/lg12591 ...
- 【VS开发】【智能语音处理】MATLAB 与 音频处理 相关内容摘记
MATLAB 与 音频处理 相关内容摘记 MATLAB 与 音频处理 相关内容摘记 1 MATLAB 音频相关函数 1 MATLAB 处理音频信号的流程 2 音量标准化 2 声道分离合并与组合 3 数 ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab slice方法和包络法绘制三维立体图
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab 高斯_拉普拉斯滤波器处理医学图像
前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...
随机推荐
- Python3标准库:bisect维护有序列表
1. bisect维护有序列表 bisect模块实现了一个算法来向列表中插入元素,同时仍保持列表有序. 1.1 有序插入 下面给出一个简单的例子,这里使用insort()按有序顺序向一个列表中插入元素 ...
- Magento 2 中请求( Request ) 后执行的基本过程
入口 :index.php 引导 Bootstrap::run() 定义于 ./vendor/magento/framework/App/Bootstrap.php 用于 index.php 应用 ...
- DOM节点的属性和方法
DOM DOM 是 JavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model).它的作用是将网页转为一个 JavaScript 对象,从而可以用脚本进行 ...
- ECMAScript基本对象——Number 对象
Number 对象,原始数值的包装对象. 1.创建 var num = new Number(value); 2.方法 toExponential(x)把对象的值转换为指数计数法. toFixed(x ...
- LeetCode 13、罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 ...
- Python机器学习及实践 课后小题
目录 第二章 2.3章末小结 @(Python机器学习及实践-----从零开始通往Kaggle竞赛之路) 第二章 2.3章末小结 1 机器学习模型按照使用的数据类型,可分为监督学习和无监督学习两大类. ...
- 剑指offer-面试题26-树的子结构-二叉树
/* 题目: 输入两棵二叉树A和B,判断B是不是A的子树. */ /* 思路: 1.注意浮点数大小的判断. 2.判断树A的某个节点是否和树B的根节点是否相同, 若相同,则判断以A该节点为根节点是否包含 ...
- 让bat文件自动以管理员身份运行
· 让bat文件自动以管理员身份运行 如何让bat文件自动以管理员身份运行,将这段写在bat文件的前头即可 : %1 mshta vbscript:CreateObject("Shell.A ...
- css 字体旋转
<div v-else> <img src="/img/dashboard/nodata.png"> <div style="color: ...
- react-React深入-一等公民-props-onChange
title: '[react]深入 - 一等公民 props & onChange' date: 2017-08-23 10:05:07 tags: react reactjs props o ...