How can I align deterministic signals?
조회 수: 3 (최근 30일)
이전 댓글 표시
I have some results from a shaking table test that have been carried out.
The input was always the same, however, records where started "by-hand" so they always have different starting times leading to signals that are not aligned. Since I am not an expert in signal processing, I need some help to align them.
I add some example data to this topic to give an idea about the data.
댓글 수: 0
채택된 답변
Star Strider
2023년 11월 16일
Probably the easiest way to do this (with these signals) is simply to threshold the beginning of each to get the index, then use that to adjust the start times for each signal to the same offset.
Try this —
files = dir('*.mat');
for k = 1:numel(files)
LD = load(files(k).name);
fn = fieldnames(LD);
s(k,:) = struct2cell(load(files(k).name, fn{:}));
L(k) = length(s{k});
Fs = 1;
t{k,:} = linspace(0, L(k)-1, L(k))/Fs;
end
figure
hold on
for k = 1:numel(files)
plot(t{k}, s{k})
% ylim([-1 1])
start(k) = find(s{k} > 0.05,1);
end
hold off
grid
[earliest,eidx] = min(start)
figure
tiledlayout(numel(files),1)
for k = 1:numel(files)
nexttile
plot(t{k}, s{k})
grid
xlim([0.75 1.5]*1E+4)
end
sgtitle('Original Signals')
figure
tiledlayout(numel(files),1)
for k = 1:numel(files)
idxrng = start(k) : numel(s{k});
ta{k} = t{k}(1:numel(idxrng)); % Adjusted Time Vector
sa{k} = s{k}(idxrng); % Adjusted Signal Vector
nexttile
plot(ta{k}, sa{k})
grid
end
sgtitle('Time-Adjusted Signals')
.
추가 답변 (1개)
Peter Perkins
2023년 11월 16일
Some of what SS shows might be easier with timetables:
for i = 1:4
signal = load("ew_data"+i+".mat"); signal = signal.ans;
start = find(abs(signal)>0.05,1,'first');
stop = find(abs(signal)>0.05,1,'last');
tt{i} = timetable(signal(start:stop),RowTimes=seconds(1:(stop-start+1))); % dunno what your time units are
end
ttAll = synchronize(tt{:},"union");
ttAll.Properties.VariableNames = "Signal" + (1:4);
stackedplot(ttAll)
참고 항목
카테고리
Help Center 및 File Exchange에서 Spectral Measurements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!