change values in a text file, save it and run it with an executable

3 vues (au cours des 30 derniers jours)
Christina
Christina le 31 Août 2011
Hello all!
I've got a text file that contains all the necessary parameters (80 in total) that I need in order to run it with an executable that I have.
I need to start a sensitivity analysis for one parameter of my text file, one at a time.
For example , in my txt file, I've got:
comments... comments... parameter A = [5 5 5 5] comments...
I want to change the values of parameter A, from 1 to 100, but each time, after every change of the parameter, I want to save the output of the text file, in order to run it with my executable file.
In simpler words, I want to open the txt file, change the parameter value,close the txt file, run it with the .exe file and save the output. And I want to do this 100 times.
Please help!
  1 commentaire
Fangjun Jiang
Fangjun Jiang le 31 Août 2011
You need to provide an example of your text file, especially how to identify and locate the parameter A. Basically you need to provide the text file to your .exe 100 times. Each time, the value of parameter is changed, right?

Connectez-vous pour commenter.

Réponses (1)

Christina
Christina le 16 Sep 2011
My text file looks like:
comments.......
comments.......
5, 5, 5, 5, ! parameter A
That line (with the parameter A) is located at number 188.
So, the code that I've written in order to locate it is:
%Define the range of the parameter A
%Assume that A can vary between 0.01 and 0.05
A_range = 0.01:0.01:0.05;
%The loop counter
for i=1:length(A_range)
%Extract each value from the range of the A_range
param1 = A_range(i)
%Replicate each of these values 4 times and create the new
%parameter set
A = repmat(param1,1,4)
%Open the jin file and scan through it
fid = fopen('....THE NAME OF MY TEXT FILE.txt);
C = textscan(fid,'%s','delimiter','\n');
% Find the line no 188
line188 = C{1}{188}
and this code is going to give me:
0.05 0.05 0.05 0.05 ! parameter A
The problem is that I need to change these values in the text (which should be formatted as strings), but because I need to loop lots of times for a big range of samples, I need to change these values as numbers in my code.
  3 commentaires
Christina
Christina le 16 Sep 2011
Thanks!
however, this is giving me
b = [5]
I need to substitute the values of: 5 5 5 5
with 0.01 0.01 0.01 0.01
0.02 0.02 0.02 0.02
0.03 0.03 0.03 0.03
and so on.
I also tried strrep, but it is not helpful for my case, because I've got thousands of loops.
Fangjun Jiang
Fangjun Jiang le 16 Sep 2011
Assume line188 is correct, textscan() should give the correct value. Then you need to wrap this in your for-loop.
line188='0.05 0.05 0.05 0.05 ! parameter A';
b=textscan(line188,'%f');
b=b{1}
b =
0.0500
0.0500
0.0500
0.0500

Connectez-vous pour commenter.

Catégories

En savoir plus sur Text Data Preparation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by