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

조회 수: 1 (최근 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에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by