Pass a parameter vector to an exe file

erasmo mancusi asked on 1 Dec 2011
Latest activity: Answer by Fangjun Jiang on 1 Dec 2011

Hi to all, I have a exe file generated from fortran that I need to run in Matlab for different parameters. The exe file require that I input by keyboard the parameter and the option in matlab: system('myprogram.exe') (equivalently ! or dos or unix) work in the same way: need the input by the keyboard. Exist the possibility to pass the input in a different way? I have tried system('myprogram.exe PARAMETER') but doesn't work. Thank you in advance to all. erasmo

1 comment

Kaustubha Govind on 1 Dec 2011

Did you mean that the executable prompts the user to enter the input? Or does it use command-line arguments? How would you provide the input from a system shell?

Tags

Products

    1 answer

    Fangjun Jiang answered on 1 Dec 2011
    Accepted answer

    try system('myprogram.exe < InputParameters.txt') where InputParameters.txt is a text file that you created ahead of time, just type in the parameters to the text file as if you are type it in command window, include the carriage return.

    2 comments

    Kaustubha Govind on 1 Dec 2011

    Nice!

    erasmo mancusi on 1 Dec 2011

    First of all I'd like to thank Jiang for his replay.
    Then I share the solution:

    fid = fopen('filename1', 'wt');
    fprintf(fid, '%6f \n', state variables); %write out the input parameters the program will need
    fprintf(fid, '%6f \n', PAR1); %write out the input parameters the program will need

    system(['myprogram.exe < ' 'f.7']);%ruxecutable with content of fname as
    % the myprogram.exe create a file named filenam2 where this program write the NDIM dtate variables and the new parameter (at each iteration the myprogram.exe close the file and then rewrite on it)
    A = importdata('filename2'); % here I import the new data that will be re-assigned to filename1
    statevariable=A(1:NDIM,1);
    PAR1=A(NDIM+1,1);
    fclose(fid);

    thx
    eramso

    Contact us at files@mathworks.com