【发布时间】:2017-03-24 00:54:15
【问题描述】:
我希望定义两个二维矩阵:f 和 f_transpose,类型为:std::array <std::array <float, 3>, dim> 和 std::array <std::array <float, dim>, 3>。 dim 的值为23。
我希望元素 f[0][0]、f[1][1]、f[2][2]、f_transpose[0][0]、f_transpose[1][1] 和 f_transpose[2][2] 为 1,其余元素为 0。
这些数组是全局变量,我尝试了以下方法:
static array <array <float, 3>, dim> f = {{{{1}}, {{0, 1}}, {{0, 0, 1}}}};
static array <array <float, dim>, 3> f_transpose = {{{{1, 0, 0}}, {{0, 1, 0}}, {{0, 0, 1}}}};
这确实在必要的地方给了我1,但一些应该是0 的值是1 或-1。我的理解是,任何未定义的都将被视为0,但显然这不是正在发生的事情。我该如何解决这个问题?
编辑:
我不得不删除之前出现的github 链接。但是为了让答案(和评论)有意义,我在下面添加了相关功能:
void print_ffamily(){
cout << "F Matrix" << endl;
for (int i = 0; i < 3; i++){
for (int j = 0; j < dim; j++){
printf("%0.2f ", f[i][j]);
}
cout << endl;
}
cout << "F transposed Matrix" << endl;
for (int i = 0; i < dim; i++){
for (int j = 0; j < 3; j++){
printf("%0.2f ", f_transpose[i][j]);
}
cout << endl;
}
}
【问题讨论】: