
How to select a data set from columns having using criteria?
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
AbelM Kusemererwa
le 27 Juin 2015
Modifié(e) : Azzi Abdelmalek
le 28 Juin 2015
I have 5 columns in the file mycolumns. They all have the same dimension. I would want to reduce the number of rows of all the columns by same amount by selecting the row that first meet the condition where the elements of columns "acc<10" and "C<20". I am interested in the first row meeting the criteria to the end of rows of each column. Again I would want to know the time the first row met the criteria and then subtract for the initial time,thus, time(1,1) to obtain the number of minutes it took for the criteria to be met. Thanks for you support.
0 commentaires
Réponse acceptée
Star Strider
le 27 Juin 2015
Modifié(e) : Star Strider
le 27 Juin 2015
EDIT — Edited to produce only the data from the time criteria are met until the end of the data.
See if this does what you want:
D = load('mycolumns.mat');
Ix1 = find((D.acc < 10) & (D.C < 20));
t0 = D.time(Ix1(1)); % First Time Criteria Met
new_time = D.time(Ix1:end)-t0; % Time From ‘t0’ To End
new_acc = D.acc(Ix1:end); % Corresponding ‘acc’
new_C = D.C(Ix1:end); % Corresponding ‘C’
figure(1)
plot(new_time,new_acc, new_time,new_C)
grid
legend('acc', 'C', 'Location','NW')
xlabel('time')

4 commentaires
Star Strider
le 28 Juin 2015
I edited my code to provide both ‘t0’ and the data you requested in my current code. It should do what you want. Note that ‘new_time’ is reset so that ‘t0’ is zero, because that’s what I thought you requested. If you want to keep the ‘old’ time, ‘new_time’ becomes:
new_time = D.time(Ix1:end);
All the data plotted in figure(1) have to be the same lengths, so it is necessary to redefine all of them.
Plus de réponses (1)
Azzi Abdelmalek
le 27 Juin 2015
Modifié(e) : Azzi Abdelmalek
le 27 Juin 2015
v=[time A B C acc ];
idx=v(:,5)<10&v(:,4)<20;
out=v(idx,:)
Time_criteria=v(find(idx,1),1)
2 commentaires
Azzi Abdelmalek
le 28 Juin 2015
Modifié(e) : Azzi Abdelmalek
le 28 Juin 2015
v=[time A B C acc ];
idx=find(v(:,5)<10&v(:,4)<20,1);
out=v(idx:end,:)
out(:,1)=out(idx,1)-v(idx,1)
Voir également
Catégories
En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!