Asked by Priya
on 18 Jun 2013

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.

*No products are associated with this question.*

Answer by Jan Simon
on 18 Jun 2013

Edited by Jan Simon
on 18 Jun 2013

Accepted answer

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 == .

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply Today
## 1 Comment

## Jan Simon (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/79453#comment_155657

What is the your question?

Did you see that the bars disappear in the forum, because they are used as inline code environment?