How to select columns based on a known repeated pattern.
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Matt
am 5 Dez. 2013
Beantwortet: Andrei Bobrov
am 5 Dez. 2013
I have data that came from excel and I want to grab the data without all the comments. I have imported the data into matlab but now I am having trouble selecting it cleanly. If the data is in a variable called raw I do the following.
data = raw(:,28:22:end);
data = [data, raw(:,29:22:end)];
data = [data, raw(:,30:22:end)];
data = [data, raw(:,31:22:end)];
data = [data, rwa(:,32:22:end)];
The problem with this is I have to reorder everything afterwards to get the columns back in the right order. I want to select all the columns like:
data = raw(:,[28:32]:22:end);
or something similiar. I figure there must be some ultra fancy vector way of doing this in 1 shot.
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 5 Dez. 2013
data = raw(:,bsxfun(@plus,29:32,22*(0:floor((size(raw,2)-32)/22))'));
0 Kommentare
Weitere Antworten (2)
the cyclist
am 5 Dez. 2013
One marginally better possibility:
data = raw(:, [28:22:end 29:22:end 30:22:end 31:22:end 32:22:end]);
0 Kommentare
Kelly Kearney
am 5 Dez. 2013
Not quite one shot, but a little less typing:
n = size(raw, 2);
idx = bsxfun(@plus, (1:22:n)', 28:32);
idx = idx(idx <= n);
data = raw(:,idx);
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!