To substitute a string in matlab script (.m) file using MATLAB.

1 view (last 30 days)
I have a script file (.m) file.
I would like to substitute " dist < 6 dist == 6 " in my matlab code file with "dist < 7 dist == 7" and dist < 8 dist == 8 and so on and save each modified script file as a separate .m file.
  1 Comment
Jan
Jan on 18 Jun 2013
Edited: Jan on 18 Jun 2013
What is the your question?
Did you see that the bars disappear in the forum, because they are used as inline code environment?

Sign in to comment.

Accepted Answer

Jan
Jan on 18 Jun 2013
Edited: Jan on 18 Jun 2013
The easiest way would be to replace the constant by a variable and use it as input:
function result = YourOriginalFunc(a)
result = (dist < 6 || dist == 6);
function result = YourNewFunc(a, b)
result = (dist < b || dist == b);
Then there is no need for writing a Matlab program which writes (modifies) Matlab programs. Most of all duplicating a function with changing one tiny detail only is a bad programming practice, because this reduces the maintainability.
But if you have really good reasons:
function result = YourOriginalFunc(a)
constant = 6;
result = (dist < constant || dist == constant);
And the modificator:
Str = fileread('YourOriginalfunc.m');
CStr = regexp(Str, '\n', 'split');
index = strncmp(CStr, 'constant =', 10);
for k = 6:10
CStr{index} = sprintf('constant = %d;', k);
FID = fopen(sprintf('NewFunc%d.m', k));
fprintf(FID, '%s\n', CStr{:});
fclose(FID);
end
Btw., dist <= constant is faster than comparing the values twice by < and == .

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!