What do I use instead of fopen and fprintf when running Matlab Coder to convert m-file to mex to C/C++

8 visualizzazioni (ultimi 30 giorni)
Hi,
I have a function which I am trying to use Matlab Coder to convert to mex and then to C code. It is a simple code, but it needs to write several of the local variables (which are arrays) to text files. In matlab this is easily done using fopen to create and open a file for writing, and then using fprintf to write the array to the opened file. However these functions are not supported in the Coder and I am not sure what to do.
My Matlab code is basically:
fid_u = fopen('velocity.txt','w');
for j = 1 : 100
fprintf(fid_u,'%16.12f\n', u(j,:));
end
fclose('all');
Does anyone know what I should change this to to be able to convert to a mex function and then C/C++ ?
Thanks!,
adam

Risposte (2)

Ryan Livingston
Ryan Livingston il 13 Mag 2013
FOPEN, FPRINTF and FCLOSE are supported for code generation starting in R2013a:
  2 Commenti
Ryan Livingston
Ryan Livingston il 22 Lug 2013
You can make use of coder.ceval() and coder.opaque() to call the C versions of FOPEN, FPRINTF and FCLOSE from your MATLAB code. Here is a demo doing this for FSCANF:
Alternatively, you could write the FOPEN/FPRINTF code directly in C in a custom C function and then just call that with coder.ceval.

Accedi per commentare.


AlessioX
AlessioX il 18 Mar 2016
FPRINTF, FOPEN and FCLOSE now in R2015b are available!
However FSCANF is not. I have to read a txt file, any alternatives to FSCANF?

Community Treasure Hunt

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

Start Hunting!

Translated by