我想创建一个函数,基本上复制matlab命令:[z;-z]
,其中z = randn(m,n)
返回一个m × n的随机矩阵。我已经能够创建C++中randn函数的函数,如下所示:
MatrixXd generateGaussianNoise(int n, int m){
MatrixXd M(n,m);
normal_distribution<double> nd(0.0, 1.0);
random_device rd;
mt19937 gen(rd());
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
M(i,j) = nd(gen);
}
}
return M;
现在我需要创建 [z;-z]
函数。例如,假设 z = randn(2,2)
,那么输出将是:
-2.2588 0.3188
0.8622 -1.3077
现在,当我写
[z;-z]
时,我们会得到: -2.2588 0.3188
0.8622 -1.3077
2.2588 -0.3188
-0.8622 1.3077
我想创建一个函数,该函数接受矩阵或向量
z
,将这些条目存储在另一个矩阵或向量中,然后创建一个新的矩阵或向量,使其大小加倍以将相关条目放置在正确的(i,j)
位置。我不确定这是否是我应该采取的方法。非常感谢您的任何意见或建议。顺便说一下,我在C++方面还有点新手。
[z; z]
也会给你一个 4 x 2。 - Sueverz
和-z
值的简单连接,并且不会改变z
。 - Suever