我正在手动将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])
1条答案
按热度按时间laawzig21#
如果你只处理一个数组,你可以想出一种方法来做到这一点。但是这里您要处理8个不同的数组(
y, ct, x, p_c, x_c, y_c, p, dx
)。作业也没有特别的顺序。它们涉及各种组合。如果您使用的是Linux/Unix,则可以使用流编辑器(sed)工具来完成此操作。对于Windows,Notepad++(免费)支持正则表达式搜索和替换。看看这个link。
如果只有30个任务,最好手动完成。你可以确保每个索引在MATLAB中正确地递增1,方法如下:
等等