【发布时间】:2016-03-23 23:56:41
【问题描述】:
我在 Matlab 中的程序查找和替换方面遇到了很多麻烦。我在这里复制了一个 MWE。
假设我在名为“BaseJac3.txt”的文本文件中有以下代码:
x2 = -S1_2*(r1+a*K+a*P)+k*KS1_1+d*(PS1_1+KS1_2);
x3 = -S1_3*(r1+a*K+a*P)+k*KS1_2+d*(PS1_2+KS1_3);
x4 = -S1_4*(r1+a*K+a*P)+k*KS1_3+d*(PS1_3+KS1_4);
x5 = -S1_5*(r2+a*K+a*P)+k*KS1_4+d*(PS1_4+KS1_5);
我需要更换
S1_2 和 y(2), ... , S1_5 和 y(5);
KS1_1 到 KS1_5 与 y(52) 到 y(57)
PS1_1 到 PS1_4 与 y(102) 到 y(105)
我该怎么做?我试过用这个:http://www.mathworks.com/matlabcentral/fileexchange/42877-find-and-replace-in-files
还有我的以下代码:
text1 = fileread('BaseJac3.txt');
for k = 1:4
regexprep(text1,['PS1_' num2str(k)],['y(' num2str(k+101) ')']);
end
for k = 1:5
regexprep(text1,['KS1_' num2str(k)],['y(' num2str(k+51) ')']);
end
for k = 2:5
regexprep(text1,['S1_' num2str(k)],['y(' num2str(k) ')']);
end
但似乎都没有正常工作。我不确定正则表达式。
提前感谢您的帮助。
【问题讨论】:
-
我不认为
regexprep是这样工作的。您应该使用该语法在循环中尝试strrep。我认为您应该能够使用正则表达式来执行此操作而无需循环。