how i can have an adjacency matrix only contains 0 and 1
2 次查看(过去 30 天)
显示 更早的评论
hello
i have a data frame, i convert that to an adjacency matrix but the adjacency matrix contains 2 while i need only 1 and 0..how i can have an adjacency matrix only contains 1 and 0 please?
this is my data frame
TFLocus TargetLocus InteractionType
AT5G10140 AT1G65480 -1
AT5G11260 AT1G27480 -1
AT5G11260 AT5G53370 -1
AT5G11260 AT1G03630 -1
AT5G11260 AT1G13600 -1
AT5G11260 AT2G41670 -1
AT5G11260 AT2G05160 -1
AT5G11260 AT2G40170 -1
by this code i have an adjacency matrix contains 0 and 1 and 2 ..
fid = fopen('Ara_GoldST.txt', 'rt');
datacell = textscan(fid, '%s%s%d', 'HeaderLines', 1);
fclose(fid);
TFLocus = datacell{1};
TargetLocus = datacell{2};
all_locus = unique([TFLocus; TargetLocus]);
num_locus = length(all_locus);
[~, TFidx] = ismember(TFLocus, all_locus);
[~, Targidx] = ismember(TargetLocus, all_locus);
adj_matrix = accumarray([TFidx(:), Targidx(:)], datacell{3}, [num_locus, num_locus]);
csvwrite('myfile.txt', adj_matrix);
%max(adj_matrix)
%min(adj_matrix)
thank you
4 个评论
采纳的回答
Walter Roberson
2016-1-9
adj_matrix = adj_matrix > 0;
2 个评论
Guillaume
2016-1-10
Alternatively, you could rewrite the accumarray call to:
adj_matrix = accumarray([TFidx(:), Targidx(:)], 1, [num_locus, num_locus], @(~) 1);
Or to:
adj_matrix = accumarray([TFidx(:), Targidx(:)], 1, [num_locus, num_locus], @prod);
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!