How can I convert indices into a binary matrix?
Mostra commenti meno recenti
Hello all, I have a txt file that includes list of selected items (there are 10 items in total). I am reading the file using "readmatrix". I want to create a binary (logical) matrix as in the example below but I am getting "The subscript vectors must all be of the same size." message. How can I fix it? Thanks for the help.
1,3,5 -> 1,0,1,0,1,0,0,0,0,0
1,2,3,7 -> 1,1,1,0,0,0,1,0,0,0
1,2,6,7,8 -> 1,1,0,0,0,1,1,1,0,0
1,2,3 -> 1,1,1,0,0,0,0,0,0,0
...
1 Commento
Risposta accettata
Più risposte (1)
Alexander
il 18 Feb 2024
1 voto
Maybe something like the following?
fid = fopen('Item.txt');
A = [];
while(~feof(fid))
syLine = fgetl(fid);
dyA = zeros(1,10);
syLine = ['[' syLine ']'];
dyLine = eval(syLine);
dyA(dyLine) = 1;
A = [A; dyA];
end
A
fclose(fid)
3 Commenti
"Maybe something like the following?"
But preferably without the evil EVAL. Why do you need it? (hint: you don't)
There are various ways to avoid ugly, evil, inefficient EVAL is this situation, here is just one:
out = nan(0,10);
fid = fopen('Item.txt');
idr = 1;
while ~feof(fid)
idr = idr+1;
idc = [fscanf(fid,'%f');fscanf(fid,',%f')];
out(idr,idc) = 1;
end
fclose(fid);
out
MB
il 18 Feb 2024
Alexander
il 18 Feb 2024
Thanks @Stephen23
Categorie
Scopri di più su Logical in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!