How can I convert indices into a binary matrix?
    7 ビュー (過去 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)
3 件のコメント
参考
カテゴリ
				Help Center および File Exchange で Dates and Time についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



