我有一个很大的比特流。 (例如10110001010101000 ..... 001大小数千或数百万)
我想将此位流分配到一个列向量x。
x = zeros(n,1);
我试过使用一些mod或rem操作,会有一些问题。
我猜它是由整数大小引起的。
我想问一下有什么好方法可以解决这个问题吗?
感谢阅读。
答案 0 :(得分:1)
假设,例如:
x = '10100101010101010100';
您可以通过这种方式将其转换为逻辑列向量:
x = (x == '1')';
答案 1 :(得分:1)
您还可以使用ascii值0
-
x-'0'
示例运行 -
>> x =
00101011001
>> x-'0'
ans =
0 0 1 0 1 0 1 1 0 0 1
然后,转置矩阵以获得列向量 - [x-'0']'
。
答案 2 :(得分:1)
考虑在加载时更早地解决问题。每个' 0' /' 1'字符存储为一个字节,因此加载包含字符代码的字节(无符号字符或uchar
),然后将字符代码转换为正确的0/1值:
fid = fopen('binchars.txt','r');
digits = fread(fid,'uchar') - 48
fclose(fid);