How can I convert indices into a binary matrix?
Show older comments
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 Comment
Accepted Answer
More Answers (1)
Alexander
on 18 Feb 2024
1 vote
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 Comments
"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
on 18 Feb 2024
Alexander
on 18 Feb 2024
Thanks @Stephen23
Categories
Find more on Dates and Time in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!