Первый столбец A
состоит из исходного узла, а второй столбец состоит из целевого узла. Я хочу преобразовать список в формат изображения размером N by N
, аналогичный указанному в ссылке (http://www.dontveter.com/basisofai/char.html), с черными и белыми квадратами. Пользователь вводит размер изображения, N
. Я попробовал следующий код, но все, что я получаю, - это несколько характеристик белого и много черного. Один из способов преодоления этой проблемы, который, на мой взгляд, заключается в расширении двоичного представления в переменной adjMat
до битов длины N
. Но я не знаю как. Любой другой способ решить эту проблему будет огромной помощью. Спасибо. очистить все
A=[1,3;1,4;1,8;1,9;1,16;1,23;1,28;2,4;2,5;2,22;2,18;2,7;3,4;3,6;3,8;3,10;3,14;4,11;4,13;4,18;4,12;5,11;5,20;5,15;5,17;6,8;6,13;6,24;6,25;7,9;7,10;7,12;8,15;8,19;9,11];
edgelist = unique(A, 'rows');
N = 50; % determines how big the image matrix should be.
%so that we can allocate a N x N sparse matrix
newA = sparse(edgelist(:,1), edgelist(:,2), 1, N, N);
%uses the first column and second column of the edge list to populate
%the entries in the sparse matrix, we set them to one and ensure that
%the size of the matrix is N x N
adjMat = full(newA);
I = mat2gray(adjMat);
imshow(I)
Код выдает следующий результат (здесь я выделил цветовую кодировку, используя imagesc
для наглядности). Как я могу получить матрицу размера N на N, и длина каждого столбца двоичного представления равна N
, а для строки - N
, в противном случае черные и белые пиксели будут сгруппированы в одном углу и не будут распределяться по размеру матрица.