여기에 ~ 20000 개의 매트 파일이 있습니다. 각 파일에는 시뮬레이션 결과, 시간 벡터 및 여러 신호 벡터가 포함되어 있습니다. 시간 벡터는 가변 스텝 타임 스탬프를 포함하고, 각각의 타임 스탬프에 대응하는 신호 값이있다.가변 단계에서 고정 단계까지의 matlab
목표 시스템이 1000 샘플/초의 샘플링 속도를 사용하기 때문에 가변 단계에서 0.001 초로 고정 단계로 변환하여 데이터 양을 줄이는 것입니다. 또 다른 이유는 다음 단계입니다. 기계 학습 기술을 적용 할 예정이므로 데이터가 적을수록 빠른 결과를 얻을 수 있습니다.
나는 이미 작동중인 코드가 있지만 매우 비효율적 인 것으로 보이는데, 나는 효율성을 향상시키기 위해 도움을 얻고 싶다. 그래서 여기
은 내가 가진 것입니다 :
time_vs; % Variable step timestamp vector
s1; s2; s3; % Signals corresponding to time_vs
% For each mat file I do (loading and so on omitted):
new_time = min(time_vs):0.001:max(time_vs); % Create the new fixed step time vector.
% Find indexes for nearest timestamps.
indexes = [];
for t = new_time
time_diff = abs(time_vs - t);
add_index = find(time_diff == min(time_diff));
indexes = [indexes, add_index(1)];
end
% Reduce the signals.
s1 = s1(indexes);
% and so on ...
내 접근 방식은 고정 된 스텝 타임 스탬프 min(time_diff)
에 가장 가까운 변수 스텝 시간 벡터 타임 스탬프, 검색됩니다. 이러한 타임 스탬프의 인덱스는 신호 s1 = s1(indexes)
을 줄이기 위해 수집됩니다.
더 효율적인 해결책이 있기를 바랍니다.
미리 감사드립니다.
감사합니다, 에드 차 실행의 복잡성 내가 대신 선형 보간의 내장 기능이라고 생각했다 루프로
주제에 대한 귀하의 업데이트는 무엇입니까? – knedlsepp