Divide a dataset into subsets
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Greg Athanasiadis
il 31 Gen 2018
Modificato: Guillaume
il 31 Gen 2018
Hello everyone
I have a dataset named chan56 which is 1619936x1 and a vector called markers which is 1x202. The vector markers has the events of the dataset chan56 and i want to split chan56 into subets that contain -1200 indexes from each event until +300. I tried
Data = []
DataMatrix =[zeros(1,length(markers)*1500)];
for n =1 :length(chanPOz)
for i =1:length(markers)
if markers(i) == chanPOz(n)
T = chanPOz(n);
Data = chanPOz(n-1200:n+300);
DataMatrix = [DataMatrix DataMatrix+Data];
end
end
end
But i cant take the DataMatrix
5 Commenti
Jos (10584)
il 31 Gen 2018
I am a little confused by the if statement. Am I right to assume that each value of markers is a direct index into chanPOZ?
Risposta accettata
Jos (10584)
il 31 Gen 2018
This is what you're after, I think. No need for a loop over each point in chanPOz
N = numel(markers) ;
% pre-allocate the result:
newData = zeros(N, 1501) ; % 1 extra !! [x-1200:x+300] are 1501 values
% loop over each marker
for n = 1:N
idx = markers(n) ; % the n-th index into chanPOz
newData(n,:) = chanPOz(idx-1200:idx+300); % get the data and store this in the n-th row
end
1 Commento
Più risposte (1)
Guillaume
il 31 Gen 2018
Even a single loop is not needed. A double loop is a complete waste of time.
Assuming R2016b or later,
assert(all(markers > 1200 & markers < numel(chanPoz) - 300), 'some markers too close to the edges');
indices_to_extract = markers(:) + (-1200:300); %create a matrix of indices
extracteddata = chanPoz(indices_to_extract.'); %extract relevant data as a matrix
Each column of extracteddata is the -1200 to 300 points around the corresponding marker. If you do want it as a vector (but why?) then you can then do:
extracteddata = reshape(extracteddata, 1, []);
If you're on a version earlier than R2016b, then the indices_to_extract line becomes
indices_to_extract = bsxfun(@plus, markers(:), -1200:300);
Vedere anche
Categorie
Scopri di più su Downloads in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!