如何通过使用MATLAB在文本文档中连续50个值后分隔0和1

时间:2019-02-05 14:38:30

标签: matlab

我有黑白图像,我在 MATLAB 中读取了该图像。一世     通过使用 dlmwrite 将我的图像文件另存为 0 1      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

我需要这样的结果

00000000000000000000000000000000000000000000000000000000 //每行50位 00000000000000000000000000000000000000000000000000000000 //每行50位 00000000000000000000000000000000000000000000000000000000 //每行50位 。 。 如此

1 个答案:

答案 0 :(得分:1)

我假设您在数组中有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'