如何将一个大流位分配到一个列向量中

时间:2014-04-15 03:45:28

标签: matlab matrix

我有一个很大的比特流。 (例如10110001010101000 ..... 001大小数千或数百万)

我想将此位流分配到一个列向量x。

    x = zeros(n,1);

我试过使用一些mod或rem操作,会有一些问题。

我猜它是由整数大小引起的。

我想问一下有什么好方法可以解决这个问题吗?

感谢阅读。

3 个答案:

答案 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);