Comparing elements between a character and a numerical column
1 view (last 30 days)
Show older comments
Jasmine Karim
on 23 Jul 2018
Commented: Jasmine Karim
on 25 Jul 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 Comments
Accepted Answer
Adam Danz
on 23 Jul 2018
Edited: Adam Danz
on 23 Jul 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]}
More Answers (0)
See Also
Categories
Find more on Data Type Identification in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!