How can I convert indices into a binary matrix?
2 次查看(过去 30 天)
显示 更早的评论
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
...
采纳的回答
Dyuman Joshi
2024-2-18
编辑:Dyuman Joshi
2024-2-18
ItemSet = readmatrix('Test.txt','NumHeaderLines',0)
tic
s = size(ItemSet);
%corresponding row values
row = repelem((1:s(1)).', 1, s(2))
%maximum value
m = max(ItemSet, [], 'all');
%subscript values
idx = [row(:) ItemSet(:)];
%check for NaN values
k = isnan(idx(:,2));
out = accumarray(idx(~k,:), 1, [s(1) m])
toc
更多回答(1 个)
Alexander
2024-2-18
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)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!