Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 通过1增加索引-将C中的代码转换为MATLAB_Regex_Matlab_Indexing - Fatal编程技术网

Regex 通过1增加索引-将C中的代码转换为MATLAB

Regex 通过1增加索引-将C中的代码转换为MATLAB,regex,matlab,indexing,Regex,Matlab,Indexing,我正在手动将C语言中的代码转换为MATLAB 代码包含如下赋值: y[10]=p[32]+p[31]-p[32]*powp_[0],p[34]/powp_[0],p[34]+powp[33],p[34] 为了在MATLAB中使用它,我手动将所有索引的值增加1,因为MATLAB中的索引从1开始 y[10+1]=p[32+1]+p[31+1]-p[32+1]*powp_c[0+1],p[34+1]/powp_c[0+1],p[34+1]+powp[33+1],p[34+1] 有没有一种简单的方法来完

我正在手动将C语言中的代码转换为MATLAB

代码包含如下赋值:

y[10]=p[32]+p[31]-p[32]*powp_[0],p[34]/powp_[0],p[34]+powp[33],p[34]

为了在MATLAB中使用它,我手动将所有索引的值增加1,因为MATLAB中的索引从1开始

y[10+1]=p[32+1]+p[31+1]-p[32+1]*powp_c[0+1],p[34+1]/powp_c[0+1],p[34+1]+powp[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])

如果您只处理一个数组,您可以想出一种方法来实现这一点。但是这里你要处理8个不同的数组y,ct,x,p_c,x_c,y_c,p,dx。而且作业也没有特定的顺序。它们涉及各种组合

如果您使用的是Linux/Unix,那么可以使用流编辑器sed工具来完成这项工作。 对于windows,免费的Notepad++支持正则表达式搜索和替换。看看这个

如果只有30个作业,最好手动完成。通过执行以下操作,可以确保每个索引在MATLAB中正确递增1:

#define BMI 1 /* BMI is BASE_MATLAB_INDEX */

y[0 + BMI] = ct[0 + BMI] - x[12 + BMI];

诸如此类……

对于所有想知道为什么她必须将索引增加1的人来说,在Matlab数组中索引是从1 Razy Matlab开始的。有可能使用正则表达式吗?我可以复制文本文件中包含赋值的所有代码行。使用正则表达式,如果我能找到[35]任何数字,请替换为[35+1]。我不知道怎么做。如果只有30个作业,我会手动完成。一个简单的sed命令就可以完成这项工作:sed-es/\[\[0-9]*\]/[1+\1]/gsed-e/\[\[0-9]*\]/[\1+1]/g'temp.txt>output.txt更正了@purplepsycho的语法