当前位置: 首页 > news >正文

MATLAB对数据隔位抽取和插值的几种方法

对于串行的数据,有时我们需要转成多路并行的数据进行处理,抽取;或者是需要对数据进行隔点抽取,或对数据进行插值处理。此处以4倍抽取或插值为例,MATLAB代码实现。

文章目录

  • 抽取
    • 方法一:downsample函数
    • 方法二:隔位索引
    • 方法三:for循环
  • 插值
    • 方法一:upsample函数
    • 方法二:先构造全0序列,再插入数据

抽取

方法一:downsample函数

使用下采样函数downsample进行抽取。格式:y =downsample(x,step,phase)。其中x是要抽取的数据,step表示步进,phase表示相位(从0开始索引)

y = 0:1:99;%y等于0到99,100个用于抽取的数据
step = 4;
y0 = downsample(y,step, 0);  
y1 = downsample(y,step, 1); 
y2 = downsample(y,step, 2); 
y3 = downsample(y,step, 3); 
y_parallel = vertcat(y0,y1,y2,y3);%放在一起看

方法二:隔位索引

使用类似y0 = y(1:step:length(y));的格式进行隔位抽取。注意MATLAB中的数据索引是从1开始的,不是0。

y = 0:1:99;%y等于0到99,100个用于抽取的数据
step = 4;
y0 = y(1:step:length(y));%从第1个数据开始每个step抽取
y1 = y(2:step:length(y));%从第2个数据开始每个step抽取
y2 = y(3:step:length(y));%从第3个数据开始每个step抽取
y3 = y(4:step:length(y));%从第4个数据开始每个step抽取
y_parallel = vertcat(y0,y1,y2,y3);%放在一起看

方法三:for循环

for循环的笨办法咯。

y = 0:1:99;%y等于0到99,100个用于抽取的数据
step = 4;
for i = step-3:step:length(y)                  y0((i+3)/step) = y(i);
end
for i = step-2:step:length(y)                  y1((i+2)/step) = y(i);
end
for i = step-1:step:length(y)                   y2((i+1)/step) = y(i);
end
for i = step-0:step:length(y)                 y3((i+0)/step) = y(i);
end
y_parallel = vertcat(y0,y1,y2,y3);%放在一起看

插值

方法一:upsample函数

使用下采样函数upsample进行插值。格式:y =upsample(x,L,phase)。其中x是要插值的数据,L表示插值倍数,phase表示原数据放置的相位(从0开始索引)

y = 1:1:100;%y等于1到100,100个用于插值的数据
L = 4;
y_up0 = upsample(y,L,0);
y_up1 = upsample(y,L,1);
y_up2 = upsample(y,L,2);
y_up3 = upsample(y,L,3);
y_up = vertcat(y_up0,y_up1,y_up2,y_up3);%放在一起看

方法二:先构造全0序列,再插入数据

y = 1:1:100;%y等于1到100,100个用于插值的数据
L = 4; %内插倍数   
y_up = zeros(1, length(y)*L); %先构造全0序列
y_up(1 : L : length(y_up)) = y;  %将源信号插入到原0序列中

当然也还是可以如之前的抽取用for循环的方法啦,但是没有以上方法简单,就不例举了。

http://www.lryc.cn/news/279654.html

相关文章:

  • [NSSCTF Round#16 Basic] CPR
  • LAMMPS 文献:9 种熔化温度模拟方法的总结与比较:两相法、单相法以及缺陷法
  • JSR-107 (JCACHE)
  • kylin4.0.3升级问题
  • 【UML】第16篇 活动图
  • Python学习之路-函数进阶
  • Mac打包Unix可执行文件为pkg
  • C++ 模拟散列表 || 哈希表存储与查询,模版题(拉链法)
  • 详解Skywalking 服务Overview页面的参数含义(适合小白)
  • Android studio GridView应用设计
  • K8s 是如何完成调度和权重调整?
  • 计算机毕业设计----Springboot超市订单管理系统
  • 如何给AI下达精准的指令,哪些提示词对于AI是有效的?
  • 软件外包资源网站分享
  • 在控制理论里,单个输入变量被施加了饱和特性处理,那么后续怎么利用李雅普诺夫判据判断系统稳定性呢?
  • MySQL夯实之路-查询性能优化深入浅出
  • UniApp面试题
  • 30 树的定义
  • 程序员必备的面试技巧
  • 【NI-DAQmx入门】LabVIEW中DAQmx同步
  • FlinkRestAPI
  • Qt获取当前系统网络接口信息
  • 【C++】STL 算法 ④ ( 函数对象与谓词 | 一元函数对象 | “ 谓词 “ 概念 | 一元谓词 | find_if 查找算法 | 一元谓词示例 )
  • C++ 并发编程 | 并发世界
  • GitHub注册新账号的操作流程(详细)
  • Kali安装Xrdp结合内网穿透实现无公网ip远程访问系统桌面
  • 【WEB API自动化测试】接口文档与在线测试
  • 【深度学习每日小知识】Training Data 训练数据
  • [acm算法学习] 后缀数组SA
  • DNS解析和它的三个实验