问题描述
嗨,以下是可能的,如果是,有什么关于如何去做的提示吗?
这是我想要实现的虚拟版本:定义三个矩阵 A、B 和 C,其中 A_xy 标准正态分布,B_xy = A_xy 用于 A_xy > 0 和 0 否则。同样,C_xy = A_xy 对于 A_xy
为了避免复制操作,我想构造 B 和 C,以使非零元素与 A 共享内存。这可能吗?!如果我以稀疏矩阵格式构造 B 和 C,那么我不需要担心不会共享内存的额外零,但这最终可能会变慢,具体取决于 B 和 C 的稀疏性...
在下面的 B 和 C 显然不与 A 共享内存,但应该给出我想要做什么的想法:
setState((initialState) => ({
...initialState,lastHole: -1,initGame: false
}))
作为输出给出:
arma_rng::set_seed(1);
mat A;
A.randn(4,4);
uvec indB = find(A > 0);
uvec indC = find(A <= 0);
// Copy construction
mat B,C;
B.zeros(4,4);
B.elem(indB) = A.elem(indB);
C.zeros(4,4);
C.elem(indC) = A.elem(indC);
A.print("A");
B.print("B");
C.print("C");
我想到的是:
A
-0.3868 -0.7951 0.1175 -1.5241
-0.0394 -0.0546 -0.8588 -0.4954
0.6868 1.9379 -0.6483 0.9138
-0.2489 1.0010 0.6746 -0.6272
B
0 0 0.1175 0
0 0 0 0
0.6868 1.9379 0 0.9138
0 1.0010 0.6746 0
C
-0.3868 -0.7951 0 -1.5241
-0.0394 -0.0546 -0.8588 -0.4954
0 0 -0.6483 0
-0.2489 0 0 -0.6272
哪个给了
// Auxiliary memory construction
mat B2(vec (A.elem(indB)).memptr(),A.n_rows,A.n_cols,false,true);
B2.print("B2");
不是我想要的,但希望你能明白!
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)