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

2024-12-13 15:56:16
推荐回答(4个)
回答1:

调用函数resample()就可以了

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

B=resample(x,90,250); %
采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。

回答2:

程序由三部分组成,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(filenametemp{1});
%卷积
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,filenametemp{1});
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);

回答3:

调用函数resample()就可以了

回答4:

resample函数,help一下,有详细介绍。