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

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

抽取

方法一: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循环的方法啦,但是没有以上方法简单,就不例举了。

相关推荐

  1. MATLAB数据抽取方法

    2024-01-10 10:18:03       55 阅读
  2. VC下显示方法

    2024-01-10 10:18:03       30 阅读
  3. Python SQLite数据库中处理空方法

    2024-01-10 10:18:03       35 阅读
  4. 关于字符串比方法

    2024-01-10 10:18:03       54 阅读
  5. 快速32/64整数取模方法

    2024-01-10 10:18:03       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 10:18:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 10:18:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 10:18:03       87 阅读
  4. Python语言-面向对象

    2024-01-10 10:18:03       96 阅读

热门阅读

  1. 【气候极端指数】MATLAB计算各种气候极端指数

    2024-01-10 10:18:03       57 阅读
  2. ES6---判断对象是否为{}

    2024-01-10 10:18:03       52 阅读
  3. go 的内存布局和分配原理

    2024-01-10 10:18:03       52 阅读
  4. 服务器访问慢怎么办?

    2024-01-10 10:18:03       57 阅读
  5. DataGear专业版 1.0.0 发布,数据可视化分析平台

    2024-01-10 10:18:03       58 阅读
  6. proxySQL+mysql8.0一主双从+springboot配置

    2024-01-10 10:18:03       54 阅读
  7. 63、图片预处理:Resize and Crop

    2024-01-10 10:18:03       62 阅读
  8. @基于大模型的旅游路线推荐方案

    2024-01-10 10:18:03       59 阅读