在Matlab中选择一定的时间范围

在Matlab中选择一定的时间范围,matlab,time,fft,Matlab,Time,Fft,我有一个项目要做,我面临一些问题。请帮帮我。我还不太擅长matlab。 基本上,我有一组运动数据(data.mat),连续记录了3天。我需要: 1.仅选择整个数据集的特定时刻(时间范围) 2.将这些时刻分成2.56秒的小部分 3.对每个小部件进行FFT,以查看频域中的运动,仅选择5-25 Hz 4.找出几个最大的频率峰值 我写了一个代码,用于生成FFT和整个数据“data.mat”的峰值,它正在工作。 这是我的代码: load('Data.mat'); P=data1(,2); % Fs=1

我有一个项目要做,我面临一些问题。请帮帮我。我还不太擅长matlab。 基本上,我有一组运动数据(data.mat),连续记录了3天。我需要: 1.仅选择整个数据集的特定时刻(时间范围) 2.将这些时刻分成2.56秒的小部分 3.对每个小部件进行FFT,以查看频域中的运动,仅选择5-25 Hz 4.找出几个最大的频率峰值

我写了一个代码,用于生成FFT和整个数据“data.mat”的峰值,它正在工作。 这是我的代码:

load('Data.mat');
P=data1(,2); %  
Fs=100       
Ts=1/Fs        
L=length(P)     
t = (0:L-1)*Ts;    
nfft = 256    

figure(1)      % raw signal plotting
plot(t,P);

y = fft(P,nfft)/L;       % FFT
ymag = abs(y(1:length(y)/2+1));
ft = Fs/2*linspace(0,1,nfft/2+1);

figure(2)    % FFT plotting
plot(ft,2*abs(y(1:nfft/2+1)))

indx=ft>= 5 & ft<= 25; % only 5-25Hz
ftsub=ft(indx);
ymagsub=ymag(indx);

% highest peaks
[pks,locs] = findpeaks(ymagsub,'MinPeakHeight',0.02)
plot(ftsub,ymagsub,ftsub(locs),pks,'rv','MarkerFaceColor','r')
load('Data.mat');
P=数据1(,2);%
Fs=100
Ts=1/Fs
L=长度(P)
t=(0:L-1)*Ts;
nfft=256
图(1)%原始信号绘图
图(t,P);
y=fft(P,nfft)/L;%快速傅里叶变换
ymag=abs(y(1:长度(y)/2+1));
ft=Fs/2*linspace(0,1,nfft/2+1);
图(2)%FFT绘图
绘图(英尺,2*abs(y(1:nfft/2+1)))

indx=ft>=5&ft=t\U启动&P

此线路要正常工作:


rows=find(P>=t_start&PIn first column我有测量数:1025600、1025601、1025602、1025603等等,所以我试着这样做:datestr(1025600,'dd-mm-yyyyy HH:mm:SS AM')ans=30-12-2807 12:00:00 AM>>datestr(1025601,'dd-mm-yyyyyy HH:mm:SS AM')ans=31-12-12-2807 12:00:00-AM>>datestr(1025602,'dd-mm-yyyyyyyyy HH:SS-AM'))ans=01-01-2808 12:00:00 AM为什么是这样?我还表演了:datenum('13-03-2013 9:20:00,'dd-mm-yyyy HH:mm:SS AM'),我得到了ans=7.3531e+05,然后我表演了:datenum('13-03-2013 940:00 AM,'dd-mm-yyyy HH:mm:SS AM'))我得到了ans=7.3531e+05。为什么我得到了相同的数字?然后我执行了:time='13-03-2013 9:20:00 AM';timen=datenum(time,'dd-mm-yyyyy HH:mm:SS AM');datestr(timen,'dd-mm-yyyy HH:mm:SS AM'),我得到了ans=13-03-2013 9:20:00 amm,我不知道什么时间格式“1025600”应该是;MATLAB
datenum
不能自动与所有其他时间格式或计数器互换。您需要计算出您的计数如何与实际时间相对应,并进行适当转换。两次关闭时,您似乎获得相同的数字的原因是
datenum
结果每天递增,而显示器并没有显示所有的有效数字。如果你将一个输出与另一个输出分开,你会看到一个微小的差异。
t_start =datenum('13-03-2013 9:20:00 AM', 'dd-mm-yyyy HH:MM:SS AM');
t_end = datenum('13-03-2013 9:45:00 AM', 'dd-mm-yyyy HH:MM:SS AM');
rows=find(P>= t_start & P<= t_end); 
r=find(t>= t_start & t<= t_end); 
plot(t(r),P(r);