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

问题描述 投票:-2回答:1

我有黑白图像和我读了MATLAB的形象。我在MATLAB使用dlmwrite命令保存我的图片文件以二进制的0和1。

现在我想实现我想在第一排前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

我需要得到这样的

每行00000000000000000000000000000000000000000000000000 // 50比特每行每行00000000000000000000000000000000000000000000000000 // 50比特00000000000000000000000000000000000000000000000000 // 50比特。 。因此,对

matlab
1个回答
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'
© www.soinside.com 2019 - 2024. All rights reserved.