Matlab 如何加快MATALAB嵌套for循环(时间戳校正)的速度?

Matlab 如何加快MATALAB嵌套for循环(时间戳校正)的速度?,matlab,timestamp,nested-loops,large-files,Matlab,Timestamp,Nested Loops,Large Files,我有10Hz分辨率的大数据文件,这些文件被分成了半个小时的文件。每个半小时的文件应包含18000行。但是,通常情况并非如此,由于数据记录错误,时间戳中存在间隙 为了能够进一步处理这些数据,我需要统一的数据文件,每个文件正好有18000行。我已经在MATLAB中编写了一个脚本,它通过使用每半小时生成的完整时间戳来解决这个问题。在原始时间戳中有间隙的地方,我用NAN填充行(时间戳行除外) 使用一个简单的示例,下面是代码: Fs=1:10; % uniform timestamp Fs=Fs';

我有10Hz分辨率的大数据文件,这些文件被分成了半个小时的文件。每个半小时的文件应包含18000行。但是,通常情况并非如此,由于数据记录错误,时间戳中存在间隙

为了能够进一步处理这些数据,我需要统一的数据文件,每个文件正好有18000行。我已经在MATLAB中编写了一个脚本,它通过使用每半小时生成的完整时间戳来解决这个问题。在原始时间戳中有间隙的地方,我用NAN填充行(时间戳行除外)

使用一个简单的示例,下面是代码:

 Fs=1:10;  % uniform timestamp
 Fs=Fs';   %'//<-- prevents string markdown

 Ts=[1 3 7 2 1; 3 4 3 3 2;6 5 2 1 3];   %Ts is the original data with the timestamp in the first column
 Corrected=zeros(length(Fs),6);        % corrected is the data after applying uniform timestamp

 for ii=1:length(Fs)
     for jj=1:length (Ts(:,1))
         if Fs(ii)==Ts(jj)
             Corrected(ii,:)=[Fs(ii) Ts(jj,:)];
             break
         else
             Corrected(ii,:)=[Fs(ii), NaN*[ii,1:4]];

    continue
        end
    end
 end

datestr
更改为
datenum
,比较数值而不是字符串可能更快。结果应该是一样的,因为不管怎样,你都要对等式的数目求和。@Adrian谢谢你的回答。使用datenum处理1个文件几乎需要一半的时间(使用datestr大约需要13分钟,而使用datestr大约需要25分钟)。但是,我在比较datenum时丢失了更多数据,因为datenum的精度更高。请再次思考:
datenum
是自参考日起天数的分数,因此如果公差为10秒,则可以找到该天数的分数:
10/(24*60*60)
,并将其用作公差。可能比比较
datevec
返回的完整向量更合适。
if sum(Fs_str(ii,:)==Ts_str(jj,:))==23
             Corrected(ii,:)=[Fs(ii) Ts(jj,:)];