我想同时创建维度N
的{{1}}矩阵。
我在Matlab中有一个代码,我正在尝试将其转换为C.让我说我想同时构造2个矩阵,在R语言中如下:
http://www.dummies.com/how-to/content/how-to-create-an-array-in-r.html(“请参阅段落”使用R中的创作者功能“)
请帮助我,我知道对于你们中的一些人来说,这个问题很愚蠢,但我对这种语言不熟悉,我没有其他人可以问。
答案 0 :(得分:0)
让我们首先解释一下多维数组。 a[n][k]
是n个数组,每个数组长k个元素。因此,a[n][k][N]
将创建n个a[k][N]
类型的数组。您需要做的就是定义数组(例如:int a[2][3][4]
)。
如果在编译时不知道数组的大小,请使用动态分配和指针。代码是这样的:
int*** pppA = new int**[n];
for (int i = 0; i < n; i++)
{
pppA[i] = new int*[k];
for (int j = 0; j < k; j++)
{
pppA[i][j] = new int[N];
}
}
不要忘记删除已完成使用的内存。
我不知道R,但如果我理解了注释中链接的示例,那么您正在寻找的是(如果您知道编译时的维度):
int a[3][4][2];
这将创建一个整数数组,没有初始化值。如果要初始化它,您有两个选择 - 编写循环或使用初始化程序。
初始化:
int a[2][4][3] = {{{1,2,3},{4,5,6},{7,8,9},{10,11,12}},{{13,14,15},{16,17,18},{19,20,21},{22,23,24}}};
//print the array
for (int i =0; i < 2; i ++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 3; k++)
{
cout << a[i][j][k] << ',';
}
cout << endl;
}
cout << "---------------------" << endl;
}
循环:
int a[2][4][3];
for (int i =0; i < 2; i ++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 3; k++)
{
a[i][j][k] = 12 * i + 4*j + k;
}
}
}