MATLAB Answers


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

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.

  1 Comment

Jan Simon
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?


No products are associated with this question.

1 Answer

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{:});

Btw., dist <= constant is faster than comparing the values twice by < and == .

  1 Comment

on 20 Jun 2013


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today