Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

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?

Priya

Products

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{:});
  fclose(FID);
end

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

1 Comment

Priya on 20 Jun 2013

thanks

Jan Simon

Contact us