fscanf/Pointing to a file in MATLAB Coder?

4 Ansichten (letzte 30 Tage)
Ryan Kalaigian
Ryan Kalaigian am 17 Aug. 2018
Bearbeitet: Ryan Livingston am 17 Aug. 2018
Hello, I am new to MATLAB coder and I am having some trouble translating the way I translate fscanf using coder.ceval. I know codegen supports fopen but not fscanf. Here's what I have:
coder.cinclude("<stdio.h>");
f = fopen(z,'r');
f = coder.opaque('FILE*','NULL');
coder.ceval('fscanf',f,formatSpec, A); %should read in values into 2-by-x double array
fclose(f);
z is a string and the name of the file, formatSpec is '%d %d' and A is the appropriate size. How do I get the pointer to the file to be z? Any suggestions would be appreciated.

Antworten (1)

Ryan Livingston
Ryan Livingston am 17 Aug. 2018
Bearbeitet: Ryan Livingston am 17 Aug. 2018
Check out the example:
which shows using fread via coder.ceval. You should be able to switch:
f = coder.opaque('FILE*','NULL');
f = fopen(z,'r');
Also don't forget to NULL-terminate your strings before passing to C. That example uses a helper function:
% Create a NUL terminated C string given a MATLAB string
function y = c_string(s)
y = [s 0];
like so:
f = fopen(c_string(z),c_string('r'));
You'll need to preallocate A before reading into it and call coder.ceval('fclose',f) like the documentation example shows.

Kategorien

Mehr zu MATLAB Coder finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by