Comparing elements between a character and a numerical column
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jasmine Karim
le 23 Juil 2018
Commenté : Jasmine Karim
le 25 Juil 2018
Not sure if this is written correctly. Suppose there is a cell array where the first column holds characters ie) 'con', 'func', key', and the second column holds numerical values ie) 74 85 98. For x = 1:length(Event) [where event is the array], if event{x,1} is 'con' AND the cell immediately after it (x+1) is 'key', take the horizontal values and place those in a new array. For example:
Column 1 = ['con', 'key', 'con', 'con', 'var', 'con', key'] Column 2 = [ 74 85 94 67 56 84 23]
The new array would look like Column 1 = ['con', 'key', 'con, 'key'] column 2 = [74 85 84 23]
for x = 1:length(event)
if event{x,1} == 'con' & event{x+1,1} == 'key'
iEvent = event{x,:}
end
end
One of the issues I think is that == does not work with characters?
0 commentaires
Réponse acceptée
Adam Danz
le 23 Juil 2018
Modifié(e) : Adam Danz
le 23 Juil 2018
Here ares some fake data using your pattern and a solution. The solution identifies the rows of 'data' where 'key' follows 'con' and puts all of those rows into a new variable, 'output'.
data = {
'con' 74;
'key' 85;
'con' 94;
'con' 67;
'var' 56;
'con' 84;
'key' 23
'con' 67;
'var' 56;
'con' 84;
'key' 23};
% row indices of con & key
isCon = strcmp(data(:,1), 'con');
isKey = strcmp(data(:,1), 'key');
% rows of 'key' where 'con' preceded
ConKeyIdx = find(isKey(2:end) & isCon(1:end-1));
ConKeySubs = sort([ConKeyIdx;ConKeyIdx+1]); %row numbers of con-key neighbors
output = data(ConKeySubs,:);
output =
{'con'} {[74]}
{'key'} {[85]}
{'con'} {[84]}
{'key'} {[23]}
{'con'} {[84]}
{'key'} {[23]}
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Cell Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!