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

2 次查看(过去 30 天)
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

回答(2 个)

KSSV
KSSV 2019-5-6
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 2019-5-6
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})];

类别

Help CenterFile Exchange 中查找有关 Large Files and Big Data 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by