我正在将C语言中的代码手动转换为MATLAB。
代码包含类似以下的赋值
y[10] = p[32]+(p[31]-p[32])*pow(p_c[0],p[34])/(pow(p_c[0],p[34])+pow(p[33],p[34]));
要在MATLAB中使用它,我要手动将所有索引的值加1,因为MATLAB中的索引从1开始。
y[10+1] = p[32+1]+(p[31+1]-p[32+1])*pow(p_c[0+1],p[34+1])/(pow(p_c[0+1],p[34+1])+pow(p[33+1],p[34+1]));
有没有简单的方法可以完成此任务? 像上面的示例一样,大约有30个作业,我正在尝试避免手动执行此操作。
编辑1: 可以使用正则表达式吗?我可以在文本文件中复制包含赋值的所有代码行。使用正则表达式,如果我可以找到[35](任何数字),请替换为[35 + 1]。我不确定如何在代码中实现这一点。
编辑2:代码中其他分配的示例。
y[0] = ct[0]-x[12];
y[1] = ct[1]-1*x[10]-x[23];
y[3] = p_c[6]+p_c[5];
y[4] = p_c[2];
y[5] = x_c[23]+x_c[10]+y_c[1];
y[6] = y_c[0]+x_c[12];
p[0] = 30;
p[1] = 12;
p[2] = 2;
p[3] = 0;
p[4] = 90;
p[5] = 45
dx[0] = FunctionForD(p[67], p[64], p[66], p[65], p[23], x_c[0], x_c[3], p[49])*p[23]-FunctionForA(y[28], y[29], p[23], y[16])*p[23]+FunctionForD(y[30], y[31], p[23], y[16])*p[23]-FunctionForA(p[134], p[133], p[132], p[130], p[131], p_c[2], p[23], x_c[21], x_c[0], p[49])*p[23]; //
dx[1] = FunctionFor2(p[169], p[167], p[168], p[166], p[23], x_c[1], x_c[17], p[49])
答案 0 :(得分:1)
如果仅处理一个数组,则可以想出一种方法来执行此操作。但是这里您要处理8个不同的数组(y, ct, x, p_c, x_c, y_c, p, dx
)。任务也没有特别的顺序。它们涉及各种组合。
如果使用Linux / Unix,则可以使用流编辑器(sed)工具来完成此操作。 对于Windows,Notepad ++(免费)支持正则表达式搜索和替换。看看这个link。
如果只有30个作业,则最好手动进行。通过执行以下操作,可以确保在MATLAB中将每个索引正确加1:
#define BMI 1 /* BMI is BASE_MATLAB_INDEX */
y[0 + BMI] = ct[0 + BMI] - x[12 + BMI];
以此类推...