Как разделить 0 и 1 в текстовом документе после 50 последовательных значений с помощью MATLAB - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть черно-белое изображение, и я читаю это изображение в MATLAB .Я сохранил свой файл изображения в двоичном виде как 0 и 1 , используя команду dlmwrite в MATLAB.

Сейчася хочу реализовать алгоритм, в котором я хочу получить первые 50 значения в первой строке, а затем следующие 50 значений во второй строке и третьи 50 значения в следующей строке и так далее.Какой должен быть код для него.Я написал код и получаю ошибку в логике.

      a= 100;
      b= 100;

         for j= 0:length(a)

              for i= 0:length(b)

                   dlmwrite('rd.txt','rd[i,j]','delimiter','b','c');

               end

          end

Мне нужен результат, как это

1021 * 00000000000000000000000000000000000000000000000000 // 50 бит на линии 00000000000000000000000000000000000000000000000000 // 50 бит в строке 00000000000000000000000000000000000000000000000000 // 50бит на строку.,Итак,

1 Ответ

0 голосов
/ 05 февраля 2019

Я предполагаю, что у вас есть 0 и 1 в массиве, и вы хотите как-то вывести их с заданной шириной столбца.Если это так, то reshape обычно может делать то, что я считаю нужным, за исключением того, что ваши данные могут не делиться равномерно на ширину ваших столбцов, т. Е. 50. Одним из способов было бы сначаладополните данные так, чтобы они были, например,

data = 'abcdefghijklmnopqrstuvwxyz';
colwidth = 6;

% padding data to fit evenly in full rows
data = [data, repmat(' ', 1, colwidth-mod(numel(a), colwidth))];

% reshaping into columns of given width
reshape(data, colwidth, [])'

Это даст вам

  5×6 char array

    'abcdef'
    'ghijkl'
    'mnopqr'
    'stuvwx'
    'yz    '

Или вы можете получить детали отдельно:

reshape(data(1:end-mod(numel(data), colwidth)), colwidth, [])'
data(end-mod(numel(data), colwidth)+1:end)

, давая вам

ans =

  4×6 char array

    'abcdef'
    'ghijkl'
    'mnopqr'
    'stuvwx'


ans =

    'yz'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...