Assigning features to the matrix based on windowing
16 views (last 30 days)
Show older comments
Hello,
At the beginning I have at my disposal file with 3 columns (signal sample, condition, device):
-297.367190000000 8 1
-295.132890000000 8 1
-282 8 1
-268.007000000000 8 1
-262.109380000000 8 1
-263.296880000000 8 1
-263.562500000000 8 1
-258.973210000000 8 1
-255.209820000000 8 1
-252.130060000000 8 1
-247.141450000000 8 1
-244 8 1
-243.025000000000 8 1
-237.704170000000 8 1
-230.770830000000 8 1
-230.597220000000 8 1
-239.697970000000 8 1
-254.455570000000 8 1
-268.051250000000 8 1
-269.360000000000 8 1
-255.611150000000 8 1
100.781000000000 3 2
54.1178190000000 3 2
25.2507100000000 3 2
23.8387100000000 3 2
46.2026210000000 3 2
49.5785290000000 3 2
20.7356310000000 3 2
-16 3 2
-73.7242630000000 3 2
Then using a the presented code for windowing I extract the following features:
fs = 256;
sbin=4;
%sbin = 1; %1s
window=fs*sbin;
overlap=fs;
Nwin = floor((length(data)-window)/overlap)+1;
for k=1:Nwin
feature{1,1}(k) = var(data(1,(k-1)*overlap+1:(k-1)*overlap+window));
[Higuchi_FD(k)] = feature2(data(1,(k-1)*overlap+1:(k-1)*overlap+window),window);
feature{2,1}(k) = feature2(k);
[Katz_FD(k)] = feature3(data(1,(k-1)*overlap+1:(k-1)*overlap+window));
feature{3,1}(k) = feature3(k);
for instance it gives the following results (the information is included in the rows):
{[ 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 … ]}
{[ 1.21 1.21 1.20 1.21 1.22 1.21 1.21 1.21 1.21 1.20 1.21 1.21 1.20 1.21 1.21 1.20 1.19 … ]}
{[ 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 … ]}
At the end I need to assign the information about condition and device to the windowed features. There 9 condition and 3 devices. How to perform that?
Regards
Elzbieta
1 Comment
Voss
on 6 Sep 2024 at 13:58
Please share all code and data necessary for us to run the code you've shown here. You can upload files using the paperclip button.
Answers (2)
Shishir Reddy
on 6 Sep 2024 at 10:37
Hey Elzbieta
Assigning the information about condition and device to the windowed features can be done by determining the most frequent condition and device for each window and assigning them to the features. This can be implemented as shown in the following code snippet -
for k = 1:Nwin
start_idx = (k-1) * overlap + 1;
end_idx = (k-1) * overlap + window;
windowed_data = signal_samples(start_idx:end_idx);
windowed_conditions = conditions(start_idx:end_idx);
windowed_devices = devices(start_idx:end_idx);
features{1, 1}(k) = var(windowed_data);
features{2, 1}(k) = feature2(windowed_data, window); % Assuming feature2 is defined
features{3, 1}(k) = feature3(windowed_data); % Assuming feature3 is defined
conditions_windowed(k) = mode(windowed_conditions); % or conditions(start_idx)
devices_windowed(k) = mode(windowed_devices); % or devices(start_idx)
end
Within each window, the condition and device are determined. As conditions or devices may vary within the window, the most frequent value (‘mode’ in MATLAB) is taken.
This approach ensures that each set of features extracted from a window is accurately labelled with the appropriate condition and device.
I hope this helps.
Image Analyst
on 6 Sep 2024 at 14:09
Why not just tack on the condition and device as the last two rows in your loop?
feature{4}(k) = data(k, 2);
feature{5}(k) = data(k, 3);
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!