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