How can i find the all the positions of elements in cell and record them all in an the same cell

1 Ansicht (letzte 30 Tage)
How can i find the all the positions of elements in cell and record them all in an the same cell ?
the following code gives me a cell with a column showing each word splitted, but i also need to know positions of them in text file.
for example : apple napkin bus bus kid, the result looking for is : bus 2 3 4 napkin 1 2 kid 1 5 apple 1 1.
the first number is their frequency , the follwing numbers are their positions
fid=fileread('file.txt');
fid=lower(fid); %convert letters to lower case
fid=regexprep(fid,'\W',' '); %regexprep to replace any character that is not alphabetic using \W with space ' '
words=regexp(fid,' ','split'); %using space ' ' to split words then put into cell
rank=tabulate(words); %compute the frequency
ans=sortrows(rank,-2); %sort the frequency

Antworten (2)

KSSV
KSSV am 6 Mai 2019
fid = fopen('data.txt','rt') ;
S = textscan(fid,'%s','delimiter','\n') ;
S = S{1} ;
fclose(fid) ;
S = strsplit(S{1})' ;
idx = contains(S,'network') ;
iwant = {'network',nnz(idx),find(idx)}
If contains is not available, read about strcmp and strcmpi.

Andrei Bobrov
Andrei Bobrov am 6 Mai 2019
f = fopen('data.txt'); str = textscan(f,'%s','delimiter','\n'); fclose(f);
str = regexp(str{1},'\w+','match','once');
[a,b,c] = unique(str(:),'stable');
out = [a,num2cell(accumarray(c,1)),accumarray(c,(1:numel(c))',[],@(x){x})];

Kategorien

Mehr zu Characters and Strings 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!

Translated by