小编zr.*_*zr.的帖子

如何将矩阵分解为内核矩阵的乘积?

问题陈述:

假设我们有一组内核平方矩阵= {K1,K2,..,Kn}.给定矩阵A找到涉及最少量矩阵乘法的乘积,其给出:A = Ki*Kj*...*Kz

例:

Say we have these two matrices in the set of Kernel matrices:
K1 = (1 2)    K2 = (5 6)
     (3 4)         (7 8)

Then we have a solution for A=K1*K2=(19 22) and also for B=K1*K1*K2=(105 122)
                                    (43 50)                         (229 266)
Run Code Online (Sandbox Code Playgroud)

是否有可用于查找解决方案的现有C或C++库?如果没有,是否有任何已知的算法/启发式?

PS这不是一个家庭作业问题或理论问题或其他一些小事.对于我在日常工作中正在进行的辅助项目,这是一个真正需要解决的问题.

c++ math matrix linear-algebra

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

如何迭代STL集并有选择地删除元素?

以下代码无法正常工作.该如何正确完成?

for (std::set<Color>::iterator i = myColorContainer.begin();
            i!=myColorContainer.end();
            ++i)
{
    if ( *i  == Yellow)
    {
        DoSomeProccessing( *i );
        myColorContainer.erase(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ stl set

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

如何生成一个好的随机种子传递给srand()?

我正在编写一个C++程序,需要为其内部用法创建一个临时文件.我想允许通过运行多个进程来同时执行程序,因此临时文件名需要随机化,这样每个生成的进程将生成一个唯一的临时文件名供自己使用.

我使用rand()为部分文件名生成随机字符,所以我需要使用srand()初始化随机数生成器的种子.

有什么选择可以将一个好的参数传递给srand(),这样两个进程就不会用相同的种子值进行初始化?我的代码需要在Windows和Linux上运行.

c c++ random

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

如何编写单元测试,其中每个测试用例具有不同的输入但是相同?

我需要为一些python类创建一个单元测试.我有一个输入和预期结果的数据库,应由UUT为这些输入生成.

这是我想要做的伪代码:

for i=1 to NUM_TEST_CASES:
    Load input for test case i
    execute UUT on the input and save output of run
    Load expected result for test case i
    Compare output of run with the expected result
Run Code Online (Sandbox Code Playgroud)

我可以使用unittest软件包实现这一目标,还是有更好的测试包用于此目的?

python unit-testing

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

如何使'svn log'忽略属性更改?

'svn log'显示以下日志:1)内容已更改的文件和/或2)属性已更改的文件.

有没有办法只显示案例1适用的文件?

svn

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

如何仅对文本文件递归地应用svn'eol-style'属性?

我需要在现有存储库上递归地应用eol-style属性.存储库包含文本文件和二进制文件.我想仅在文本文件上应用此属性,而不是在二进制文件上应用此属性.如何从命令行或脚本中完成?

svn shell

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

如何将STL容器作为参数传递给BOOST_CHECK_EQUAL?

例如,假设我们要测试这个类:

struct TestMe {
  vector<int> getSomething();
}
Run Code Online (Sandbox Code Playgroud)

测试功能由以下部分组成:

...
vector<int> Expected;
TestMe TM;
...
Result = TM.getSomething();
BOOST_CHECK_EQUAL(Result, Expected);
...
Run Code Online (Sandbox Code Playgroud)

STL向量提供了一个自由运算符==,但是它没有提供运算符<<,所以这段代码不能编译.我怎样才能让它发挥作用?我可以定义自己的运算符<<?它的实现是什么样的?对最通用的解决方案的额外信任:)

c++ boost unit-testing stl

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

AVX寄存器如何通过公共调用约定处理?

我找不到任何定义调用者和被调用者如何处理YMM寄存器的文档.

为了集中我的问题,这是我想知道的:

  1. 在返回调用者之前,被调用者必须恢复哪些YMM寄存器?
  2. 由于Linux和Windows中的XMM寄存器存在差异,我假设YMM寄存器也遵循相同的规则.每个操作系统的规则是什么?

编辑:感谢下面的答案,我能够在提到的Win64文档中找到答案.我很确定Linux遵循类似的规则:

"...
The YMM registers do not have callee-save status, except for the lower half
of YMM6-YMM15 in 64-bit Windows, where XMM6-XMM15 have callee-save status.
Possible future extensions of the vector registers to 512 bits or more will not have calleesave
status.
..."
Run Code Online (Sandbox Code Playgroud)

linux windows calling-convention avx

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

gdb可以设置为在任何抛出中断吗?

我正在使用异常抛出和异常处理来调试代码.我希望gdb在抛出异常时立即中断,所以我可以检查程序和调用堆栈的状态.抛出任何异常时如何使gdb中断?

c++ gdb exception

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

可以'svn开关'比'rm -rf && svn checkout'慢吗?

假设我的工作副本〜/ WC /是最新的http://acme.com/svn-rep/ A /.现在我想通过http://acme.com/svn-rep/ B/更新同样的工作副本.我有两个选择:

  1. svn开关http://acme.com/svn-rep/B/~/ WC /
  2. rm -rf~/WC/&& svn co http://acme.com/svn-rep/B/~/ WC /

显然,选项1的最佳情况比选项2的最佳情况更快.但是在最坏的情况下,选项1是否比选项2的最坏情况慢?

我问的原因是我正在编写一堆脚本来自动化一些测试,我需要在同一个存储库中的几个分支上工作.测试机器上的磁盘空间有限,因此我必须重用相同的工作副本.

编辑:

在阅读下面的aix答案中的链接后,似乎有第三种选择:

svn performance

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