标签: bitstring

缓存Matlab函数结果到文件

我在Matlab写一个模拟.我最终将运行这个模拟数百次.在每次模拟运行中,都有数百万个模拟周期.在每个循环中,我计算一个非常复杂的函数,需要~0.5秒才能完成.函数输入是一个长位数组(> 1000位) - 这是一个0和的数组1.我认为该位阵列中的一个矩阵01,并为他们中的每一个我仅运行该函数一旦-正如我保存的结果在不同的阵列(RES),并检查比特阵列是在基体中运行的功能的前:

for i=1:1000000000
    %pick a bit array somehow
    [~,indx] = ismember(bit_array,bit_matrix,'rows');
    if indx == 0
        indx = length(results) + 1;
        bit_matrix(indx,:) = bit_array;
        res(indx) = complex_function(bit_array);
    end
    result = res(indx)
    %do something with result
end
Run Code Online (Sandbox Code Playgroud)

我有两个问题,真的:

  1. 有没有更有效的方法来找到矩阵中的行的索引然后'ismember'?

  2. 由于我多次运行模拟,并且我得到的位数有很大的重叠,我想在运行之间缓存矩阵,这样我就不会在相同的位数组上重复计算函数再次.我怎么做?

simulation matlab caching bitstring

3
推荐指数
1
解决办法
1099
查看次数

尽可能以最快的方式生成所有n位二进制数

如何生成所有可能的n位字符串组合?我需要以最快的方式生成20位字符串的所有组合.(我目前的实现是通过按位AND和右移操作完成的,但我正在寻找更快的技术).

我需要将位串存储在数组(或列表)中以获得相应的十进制数,例如 -

0 --> 0 0 0

1 --> 0 0 1

2 --> 0 1 0 ...等

任何的想法?

algorithm bitstring

3
推荐指数
1
解决办法
1万
查看次数

如何从用 numpy 的 tofile() 编写的原始二进制文件中读取浮点数

我正在float32用 numpy 的tofile().

float_num = float32(3.4353)
float_num.tofile('float_test.bin')
Run Code Online (Sandbox Code Playgroud)

它可以用 numpy's 读取fromfile(),但这不符合我的需要,我必须在bitstring模块的帮助下将其作为原始二进制文件读取。

所以我执行以下操作:

my_file = open('float_test.bin', 'rb')
raw_data = ConstBitStream(my_file)
float_num_ = raw_data.readlist('float:32')

print float_num
print float_num_
Run Code Online (Sandbox Code Playgroud)

输出:

3.4353
-5.56134659129e+32
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?第二个输出也应该是3.4353或关闭。

python numpy bitstring

3
推荐指数
1
解决办法
4442
查看次数

将二进制文件分割成块的更好方法,最好使用位串理解

我正在尝试用更优雅的函数替换以下函数:

split_packet(_, <<>>) ->
    [];
split_packet(Size, P) when byte_size(P) < Size ->
    [ P ];
split_packet(Size, P) ->
    {Chunk, Rest} = split_binary(P, Size),
    [ Chunk | split_packet(Size, Rest) ].
Run Code Online (Sandbox Code Playgroud)

(我现在这不是尾递归——想要保持简单,此外在新的 Erlang 版本中性能并不重要)

输出示例:

1> split_packet(3, <<1,2,3,4,5,6,7,8>>).
[<<1,2,3>>,<<4,5,6>>,<<7,8>>]
Run Code Online (Sandbox Code Playgroud)

具有列表推导式的优雅解决方案将是更好的选择,因为其结果将使用列表推导式进一步处理,然后可以将其包装在一个推导式中。

我试过

[ X || <<X:Size/binary>> <= P ].
Run Code Online (Sandbox Code Playgroud)

但如果 Size 不是以下的倍数,则会忽略最后一个块byte_site(P)

2>  [ X || <<X:3/binary>> <= <<1,2,3,4,5,6,7,8>> ].
[<<1,2,3>>,<<4,5,6>>]
Run Code Online (Sandbox Code Playgroud)

erlang list-comprehension bitstring

2
推荐指数
1
解决办法
2130
查看次数

位串长度

我需要比特串的长度.我为它创建了这样的功能:

len( << Bitstr/bitstring >> ) ->
        len( Bitstr, 0 ).

len( << _X, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 8 );
len( << _X:7, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 7 );
len( << _X:6, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 6 );
len( << _X:5, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 5 );
len( << _X:4, Tail/bitstring >>, Len ) ->
        len( Tail, Len + 4 …
Run Code Online (Sandbox Code Playgroud)

erlang bitstring

2
推荐指数
1
解决办法
1408
查看次数

在SQL中使用位串(而不是int)匹配位掩码

我在这里找到了一个很好的资源( 比较SQL中的两个位掩码以查看是否有任何匹配 )用于在SQL数据库中进行搜索,在SQL数据库中使用位掩码存储具有多个属性的数据.但是,在示例中,所有数据都存储为int,而where子句似乎只适用于int.

是否有一种简单的方法可以将非常相似的测试用例转换为使用完整的位串?所以不是像下面这样的例子:

with test (id, username, roles)
AS
(
    SELECT 1,'Dave',1
    UNION SELECT 2,'Charlie',3
    UNION SELECT 3,'Susan',5
    UNION SELECT 4,'Nick',2
)
select * from test where (roles & 7) != 0 
Run Code Online (Sandbox Code Playgroud)

而是有类似的东西:

with test (id, username, roles)
AS
(
    SELECT 1,'Dave',B'001'
    UNION SELECT 2,'Charlie',B'011'
    UNION SELECT 3,'Susan',B'101'
    UNION SELECT 4,'Nick',B'110'
)
select * from test where (roles & B'001') != 0 
Run Code Online (Sandbox Code Playgroud)

我可以来回转换,但用实际的位串可视化更容易.对于我的简单转换(上面),我得到一个错误,操作符不适用于位串.还有另一种方法可以设置它吗?

sql postgresql bitmask match bitstring

2
推荐指数
1
解决办法
6405
查看次数

Erlang - 如何连接位串

我正在尝试连接位串

 cowboy_req:reply(

               200, #{<<"content-type">> => <<"text/html">>},

               <<"<div style='color:#FF0'>">> ++ cowboy_req:host(Req) ++ <<"</div>">> , 

               Req
    )
Run Code Online (Sandbox Code Playgroud)

但由于++运营商的原因,它会产生运行时错 如何连接两个位串?

erlang bitstring

1
推荐指数
1
解决办法
463
查看次数

Elixir - 在较大的bitstring中找到子位串

我如何在Elixir中查找子字符串是否与另一个位串一起出现?我需要验证位串X是否存在于位串Y中的某个位置以进行测试.使用现有功能有一种简单的方法吗?

x = "bar"
y = "foo bar baz"
some_substring_function(x, y)
Run Code Online (Sandbox Code Playgroud)

some_substring_function返回truthy值.

提前致谢!

testing erlang substring elixir bitstring

0
推荐指数
1
解决办法
227
查看次数

比特串的正则表达式可被4整除

我是正则表达的新手.

在我的一个作业问题中,我被要求写下面的正则表达式.

The set of all bit strings (i.e. strings over alphabet {0,1}) that are divisible by 4.
Run Code Online (Sandbox Code Playgroud)

现在,我没有得到如何开始实现解决方案.如何找到可被4整除的位?

regex math binary bitstring

-3
推荐指数
1
解决办法
3000
查看次数