Azzera filtri
Azzera filtri

search for a word in a cell

3 visualizzazioni (ultimi 30 giorni)
Amr Hashem
Amr Hashem il 28 Lug 2015
Commentato: Stephen23 il 31 Lug 2015
I have a data which is 20*55 cell
and I want to search for a word in this cells
I search in column 51,52,53,54 & 55(which contain text)
so i have to repeat by search five times each in a column
I use this code:
[ndata text alldata] = xlsread('categ.xlsx','new');
j=1;
k=1;
D=alldata(:,51); % search in column 51
for H = 1:R % for loop to remove NaN
if isnan(D{H})
D{H} = '';
end
end
for E=1:R % from 1 : length of columns
B=~cellfun('isempty',regexp(D,'BATTERY')) ; % works well search for battery (uppercase) and returns 1 or 0
if (B(E) == 1) % if value of array greater than or equal 1
Defs(j)=E; % save its postion (E,1)
j=j+1;
else % save all arrays didn't have 'check' separately
not(k)=E;
k=k+1;
end
end
data=alldata(Defs,:); % show data contains 'battery'
I want to use or ( if the word is exist in 51 or 52 ....55) , to reduce time
HOW I CAN SEARCH IN THE FIVE COLUMNS AT ONCE?
  4 Commenti
Amr Hashem
Amr Hashem il 28 Lug 2015
several words
for example:
battery
power
ecg...
one per each search
Amr Hashem
Amr Hashem il 29 Lug 2015
I want to search in the 5 columns by a word (ex: battery...) , without needing to repeat search at each column separately.

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 29 Lug 2015
Modificato: Stephen23 il 29 Lug 2015
It seems that you want to collect together the rows of the file data that contain a particular word (e.g. "Battery"). Here is how you can search particular columns (here I search columns [2,3,4]), how the NaN's can be ignored, and how the rows can be extracted for your output:
X = {'A','Battery','Cheese', NaN;...
'A','Bison', NaN, 'Battery';...
'A','Battery','Battery',NaN;...
'A','Bathtub','Chalk', 'Duck'};
%
Y = X(:,2:4); % columns [2,3,4]
idx = cellfun('isclass',Y,'char');
idx(idx) = ~cellfun('isempty',regexpi(Y(idx),'Battery'));
data = X(any(idx,2),:)
And the output shown in the command window excludes the rows that do not contain the word "battery" (i.e. the fourth row has been removed):
data =
'A' 'Battery' 'Cheese' [ NaN]
'A' 'Bison' [ NaN] 'Battery'
'A' 'Battery' 'Battery' [ NaN]
  3 Commenti
Amr Hashem
Amr Hashem il 30 Lug 2015
Modificato: Amr Hashem il 30 Lug 2015
What if I want to save the forth row (didn't contain "battery") in a separate place,for a further\another search?
I try:
Notdata = X(~idx,:);
but it didn't work...!!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Propulsion and Power Systems 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!

Translated by