Matlab:从二进制降序到升序二进制,比如[0 0 1 0]到[0 1 0 0]或1011到1101?

Matlab:从二进制降序到升序二进制,比如[0 0 1 0]到[0 1 0 0]或1011到1101?,matlab,math,binary,Matlab,Math,Binary,我有只存储二进制数的数组,如下所示,二进制数的大小为1x31。现在我想让最后一位成为第一位,第一位成为最后一位,依此类推。在这里,数据结构的选择可能非常糟糕——当我学习使用二进制文件时,我可能会放弃数组。通过简单的排序,二进制文件使得数组的排序更加容易。不管怎么说,这是一个难题: 在Matlab中是否有一些准备好的命令可以将递减二进制更改为递增二进制? 输入 >> C(21,:) ans = (1,11) 1 (1,16) 1 (1,17

我有只存储二进制数的数组,如下所示,二进制数的大小为1x31。现在我想让最后一位成为第一位,第一位成为最后一位,依此类推。在这里,数据结构的选择可能非常糟糕——当我学习使用二进制文件时,我可能会放弃数组。通过简单的排序,二进制文件使得数组的排序更加容易。不管怎么说,这是一个难题:

在Matlab中是否有一些准备好的命令可以将递减二进制更改为递增二进制?

输入

>> C(21,:)

ans =

   (1,11)       1
   (1,16)       1
   (1,17)       1


>> full(C(21,:))

ans =

  Columns 1 through 11

     0     0     0     0     0     0     0     0     0     0     1

  Columns 12 through 22

     0     0     0     0     1     1     0     0     0     0     0

  Columns 23 through 31

     0     0     0     0     0     0     0     0     0
num = ['101010';'010101']
revnum = fliplr( num2str(num) )

num =

101010
010101

revnum =

010101
101010
使用一些命令(如invertDec2Asc)的输出目标

>> invertDec2Asc(C(21,:))

ans =

   (1,21)       1
   (1,16)       1
   (1,15)       1

flipud
fliplr
就是您要找的


matlab中二进制文件的格式:“1010”,例如,使用
dec2bin(10)

尝试使用
num2str
后跟
fliplr

revnum = fliplr( num2str(num) )
测试

>> C(21,:)

ans =

   (1,11)       1
   (1,16)       1
   (1,17)       1


>> full(C(21,:))

ans =

  Columns 1 through 11

     0     0     0     0     0     0     0     0     0     0     1

  Columns 12 through 22

     0     0     0     0     1     1     0     0     0     0     0

  Columns 23 through 31

     0     0     0     0     0     0     0     0     0
num = ['101010';'010101']
revnum = fliplr( num2str(num) )

num =

101010
010101

revnum =

010101
101010

flip(…)
fliplr(…)
工作,它们的区别是什么+1“ud”代表向上和向下,而“lr”代表左、右,因此它主要对矩阵很重要。因此,可以指定翻转方向。还有
flipdim
flip(…)
可用于垂直和水平方向,但它们不适用于flip(11100001)之类的二进制文件。您可以看到,每种类型的向量/矩阵都有各种选项,但二进制数是
'1010'
而不是
1010
@thewaywewalk,这是真的。不知何故,我没有注意到二进制文件是字符串。当我处理数字时,我习惯于
num2str
,这不会造成伤害。