How findsignal dtw option works?
7 views (last 30 days)
Show older comments
Hi,
I would like to know how findsignal using dtw aligment works, but the documentation is confussing for me.
I think is sliding data throught a window of numel(signal) along 'data' and making dtw(data(window),signal) on each iteration, could be¿?This is what is written in the function but I can't open dtwfindmex
if strcmp(align,'dtw')
% seek segments such that:
% dist(k) == dtw(data(:,istart(k):istop(k)),sig,metric)
% warping paths may not overlap
[istart, istop, dist] = dtwfindmex(data,signal,metric);
0 Comments
Answers (1)
Umar
on 4 Jul 2024
Hi David,
You asked how findsignal using dtw aligment works
The findsignal function in MATLAB, when used with DTW alignment, aims to locate segments in a dataset where a specific signal closely matches a reference signal. Dynamic Time Warping (DTW) is a technique used to compare sequences with different lengths by allowing for non-linear alignments between them.
This is what is written in the function but I can't open dtwfindmex
The snippet of code you provided suggests that when the alignment mode is set to 'dtw', the function seeks segments in the data such that the DTW distance between the segment and the signal is minimized. The dtwfindmex function is likely a MEX function (a MATLAB executable) that efficiently computes the DTW alignment between the data segments and the signal. To provide a clearer understanding, let's break down the process step by step. The data is segmented into smaller windows or segments.For each segment, the DTW distance between the segment and the signal is computed using the dtwfindmex function.The segments with the lowest DTW distances are selected as potential matches for the signal. To illustrate the concept, let me provide a simplified example,
% Generate sample data data = randn(1, 100); % Random data signal = [0.5, 0.7, -0.2]; % Sample signal
% Perform DTW alignment using dtwfindmex [istart, istop, dist] = dtwfindmex(data, signal, 'euclidean');
% Display the results disp('Start Index of Segments:'); disp(istart); disp('End Index of Segments:'); disp(istop); disp('DTW Distances:'); disp(dist);
In above example, data represents the dataset, and signal is the reference signal. The dtwfindmex function calculates the DTW distances between segments of data and signal, returning the start and end indices of the segments with the lowest distances. By understanding the underlying principles of DTW alignment and the findsignal function's implementation, you can effectively utilize these tools for signal processing and pattern recognition tasks. If you encounter difficulties accessing dtwfindmex, ensure that the function is properly installed and accessible in your MATLAB environment.
Feel free to experiment with different datasets and signals to deepen your understanding of how DTW alignment can be applied in signal processing applications.
4 Comments
Umar
on 4 Jul 2024
Hi David,
The segment selection process occurs within the if strcmp(align,'dtw') block. The function dtwfindmex is utilized to find segments satisfying the condition dist(k) == dtw(data(:,istart(k):istop(k)),sig,metric). These segments are selected based on the DTW distance between the specified data segment and the signal sig, ensuring that the warping paths do not overlap. The variables istart, istop, and dist store the selected segments and their corresponding distances, facilitating non-overlapping segment selection based on the DTW metric.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!