将 C++ 代码转换为 R 代码以生成数据
Translate C++ code into R code for data generating purposes
我希望根据以下代码为我的硕士论文创建一些数据,但我只熟悉 R ,如果能对以下代码的作用或在 R 中的实现提供一些指导,我们将不胜感激。
case 9: // generates a 20-dim affine space in 100- dimensions
dim=20;
// allocate memory for the output
plhs[0] = mxCreateDoubleMatrix(dim, num, mxREAL);
data = mxGetPr(plhs[0]);
para=new double*[20];
for(i=0;i<20;i++)
para[i]=new double[long(num)];
for(i=0;i<20;i++)
for(j=0;j<num;j++)
para[i][j]=5.0*uni()-2.5;
vectors=new double*[20];
for(i=0;i<20;i++)
vectors[i]=new double[dim];
for(i=0;i<20;i++)
for(j=0;j<dim;j++)
{
if(i==j)
vectors[i][j]=1;
else
vectors[i][j]=0;//0.25*(uni()-0.125);
}
//vectors[i][j]=10*(uni()-0.5);
//generate the figure
for(i=0;i<num;i++)
{
for(j=0;j<dim;j++)
{
data[i*dim+j]=0;
for(k=0;k<20;k++)
data[i*dim+j]+=para[k][i]*vectors[k][j];
}
}
mexPrintf("Generated %i data points of a 20-dimensional affine subspace in R^20\n",num);
mexPrintf("The correct dimension of this submanifold is 20\n");
for(i=0;i<20;i++)
delete para[i];
delete para;
break;
num
是我要生成的点数和 dim
维度,因此它们本质上是我的输入。
我编辑了我的 post,因为我发现正确答案需要完整的代码,对于给您带来的不便,我们深表歉意。
这是一个翻译,也许你可以试试
vectors <- matrix(nrow = 20,ncol = dim)
for (i in 1:20) {
for (j in 1:dim) {
vectors[i,j] <- ifelse(i==j,1,0)
}
}
for (i in 1:20) {
for (j in 1:dim) {
data[i*(dim-1+j)] <- 0
for (k in 1:20) {
data[i*(dim-1)+j] <- data[i*(dim-1)+j] + para[k,i]*vectors[k,j]
}
}
}
我希望根据以下代码为我的硕士论文创建一些数据,但我只熟悉 R ,如果能对以下代码的作用或在 R 中的实现提供一些指导,我们将不胜感激。
case 9: // generates a 20-dim affine space in 100- dimensions
dim=20;
// allocate memory for the output
plhs[0] = mxCreateDoubleMatrix(dim, num, mxREAL);
data = mxGetPr(plhs[0]);
para=new double*[20];
for(i=0;i<20;i++)
para[i]=new double[long(num)];
for(i=0;i<20;i++)
for(j=0;j<num;j++)
para[i][j]=5.0*uni()-2.5;
vectors=new double*[20];
for(i=0;i<20;i++)
vectors[i]=new double[dim];
for(i=0;i<20;i++)
for(j=0;j<dim;j++)
{
if(i==j)
vectors[i][j]=1;
else
vectors[i][j]=0;//0.25*(uni()-0.125);
}
//vectors[i][j]=10*(uni()-0.5);
//generate the figure
for(i=0;i<num;i++)
{
for(j=0;j<dim;j++)
{
data[i*dim+j]=0;
for(k=0;k<20;k++)
data[i*dim+j]+=para[k][i]*vectors[k][j];
}
}
mexPrintf("Generated %i data points of a 20-dimensional affine subspace in R^20\n",num);
mexPrintf("The correct dimension of this submanifold is 20\n");
for(i=0;i<20;i++)
delete para[i];
delete para;
break;
num
是我要生成的点数和 dim
维度,因此它们本质上是我的输入。
我编辑了我的 post,因为我发现正确答案需要完整的代码,对于给您带来的不便,我们深表歉意。
这是一个翻译,也许你可以试试
vectors <- matrix(nrow = 20,ncol = dim)
for (i in 1:20) {
for (j in 1:dim) {
vectors[i,j] <- ifelse(i==j,1,0)
}
}
for (i in 1:20) {
for (j in 1:dim) {
data[i*(dim-1+j)] <- 0
for (k in 1:20) {
data[i*(dim-1)+j] <- data[i*(dim-1)+j] + para[k,i]*vectors[k,j]
}
}
}