Effacer les filtres
Effacer les filtres

i have this code

1 vue (au cours des 30 derniers jours)
Armina Petrean
Armina Petrean le 6 Juin 2023
Réponse apportée : Shivani le 27 Juin 2023
i ahve this code and i donțt understand why is not working .
clear all
clc
close all
fid = fopen('corpusjuridicspatii.txt');
x=fread(fid,'*char');
binary = dec2bin(x,8);
binary_t=transpose(binary);
bin=binary_t(:)-'0';
i =1;
j =1;
while (i<length(binary_t))
cuvinte{j} = '';
while binary_t(i)~=32 % cat timp nu am dat de caracterul spatiu, concatenam caracterele la celula care contine cuvantul respectiv
cuvinte{j} = [cuvinte{j},char(binary_t(i))];
i = i+1;
end
j = j+1;
i = i+1; % cand dam de spatiu, sarim peste el ca sa nu ne blocam
end
[cuvinte_unice, ida, idb] = unique( cuvinte ) ;
counts = accumarray( idb, ones(size(idb)) ) ;
% cuvintele unice si numarul lor de ocurente
[ocurente_cuvinte_unice_sortate, indici_cuvinte_unice_sortate] = sort(counts,'descend');
frecvente_cuvinte_unice_sortate = ocurente_cuvinte_unice_sortate/length(cuvinte);
cuvinte_unice_sortate = cuvinte_unice(indici_cuvinte_unice_sortate);
for i = 1:length(cuvinte_unice_sortate)
['PROGRES DE ',num2str(i/length(cuvinte_unice_sortate)*100),' %']
cuvinte_numeric(find(strcmp(cuvinte,cuvinte_unice_sortate(i)))) = i;
% for j = 1:length(cuvinte_unice_sortate)
% if strcmp(cuvinte(i),cuvinte_unice_sortate(j))
% cuvinte_numeric(i) = j;
% break;
% end
% end
end
a=unique(cuvinte,'stable');
b=cellfun(@(x) sum(ismember(cuvinte,x)),a,'un',0);
  1 commentaire
Armina Petrean
Armina Petrean le 6 Juin 2023

Connectez-vous pour commenter.

Réponses (1)

Shivani
Shivani le 27 Juin 2023
Hi Armina,
The error in the code is occurring because the while loop is not properly checking if the index i' exceeds the length of the binary_t array. This can cause the loop to run beyond the length of the array and result in the error message you are seeing.
To fix this error, you should add a check to ensure that i does not exceed the length of 'binary_t array. Here is an updated version of the code that should work:
clear all
clc
close all
fid = fopen('etxt1.txt');
x=fread(fid,'*char');
binary = dec2bin(x,8);
binary_t=transpose(binary);
bin=binary_t(:)-'0';
i =1;
j =1;
cuvinte{j} = '';
while (i<length(binary_t))
cuvinte{j} = '';
while (i<length(binary_t) && binary_t(i)~=32) % cat timp nu am dat de caracterul spatiu, concatenam caracterele la celula care contine cuvantul respectiv
cuvinte{j} = [cuvinte{j},char(binary_t(i))];
i = i+1;
end
j = j+1;
i = i+1; % cand dam de spatiu, sarim peste el ca sa nu ne blocam
end
Please note that I have also initialised the cuvinte variable before entering the loop to remove the warning shown in the attached screenshot. This warning appears because the length of this variable is varying at every iteration of the loop.
Hope this helps!

Produits


Version

R2020a

Community Treasure Hunt

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

Start Hunting!