MATLAB Answers

0

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

VINH CHI HA さんによって質問されました 2019 年 5 月 6 日
最新アクティビティ Andrei Bobrov
さんによって 回答されました 2019 年 5 月 6 日
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
2019 年 5 月 6 日
YOu should attach your text file.
my file is updated now, thank you

サインイン to comment.

2 件の回答

回答者: 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.

  0 件のコメント

サインイン to comment.


回答者: 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})];

  0 件のコメント

サインイン to comment.



Translated by