【发布时间】:2013-12-01 07:48:35
【问题描述】:
我有一个项目要做,我面临一些问题。请帮我。我还不太擅长matlab。 基本上,我有一组连续记录 3 天的运动数据(data.mat)。我需要: 1. 仅选择这整组数据中的某些特定时刻(时间范围) 2. 将这些时刻分成 2.56 秒的小部分 3.对每个小零件做FFT,看频域的运动,只选择5-25Hz 4.找到几个最大的频率峰值
我编写了一个代码来为我的整个数据“Data.mat”制作 FFT 和峰值,它正在工作。 这是我的代码:
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')
现在我试图只选择数据的某些时刻,但我遇到了问题。 例如。可以说,我只想选择时间范围:13-03-2013 9:20:00-9:45:00 AM
我试过了:
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);
但我得到了答案: 行= 空矩阵:0×1
怎么了?如果此代码错误,那么如何选择某个时间范围呢? 以及如何选择成2.56秒?
请帮助我,几周以来我一直在寻找解决方案,我现在真的很沮丧。
【问题讨论】: