matlab中怎样对数据进行重采样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中怎样对数据进行重采样相关的知识,希望对你有一定的参考价值。

调用函数resample()就可以了

resample为信号降采样处理,理解如下:

B=resample(x,90,250); %
采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。
参考技术A 程序由三部分组成,main.m主程序,负责处理数据,readdata.m负责读取数据,writedata.m负责将处理好的数据写成文件。
main.m
clear
dirs=dir('F:\matlab\impact\*.txt');
dircell=struct2cell(dirs)';
filenames=dircell(:,1);
filenum=size(filenames);
filenumrow=filenum(1);
for num=1:filenumrow
filenametemp=filenames(num);
y=readdata(filenametemp1);
%卷积
x=filter(ones(1,50),50,y(:,[2:5]));
y=[y(:,[1]) x];
%首行标示
y(1,:)=1:5;
demensionY=size(y);
Y_rows=demensionY(1);
converted_y=zeros(1,5);
j=0;
for i=1:10:Y_rows
j=j+1;
converted_y(j,:)=y(i,:);
end
%converted_y
writedata(converted_y,filenametemp1);
end
readdata.m
function y=readdata(filename)
%c(10:14)=file1;
%c(15:18)='.txt';
fid=fopen(filename,'r');
[a,num]=fscanf(fid,'%f',[5,inf]);
fclose(fid);
a=a';
y=a;
writedata.m
function writedata(writedData,filename)
filenames=strcat(['Result_',filename]);
fid=fopen(filenames,'w');
%fprintf(fid,'%f %f %f %f\n',writedData');
fprintf(fid,'%f %f %f %f %f\n',writedData');
fclose(fid);
参考技术B 调用函数resample()就可以了本回答被提问者和网友采纳 参考技术C resample函数,help一下,有详细介绍。

以上是关于matlab中怎样对数据进行重采样的主要内容,如果未能解决你的问题,请参考以下文章

关于重采样后栅格数据行列数不一致的问题

求助ArcGIS高手!!!重采样和矢量化啥关系?

音频重采样

音频重采样实现原理

matlab 实现语音信号重采样和归一化,并播放比对效果

如何从最后一行开始对时间序列数据进行反向重采样?