MATLAB Answers


mkdir and the matlab compiler

Asked by Mike
on 6 Mar 2012

Hi, I'm having a problem getting the compiled version of my code to make a new directory - I use mkdir and it works great in the m-file, but I get nothing out of the compiled version. I found on thread suggested adding this statement in files related, but it doesn't seem to do anything and I likely don't understand how to use it.

*%#function mkdir * 

The code compiles and creates the excel datafile, but not the directory or creates the file in the directory..

Here is a snippet of my code -

measurementTitle = 'Test-title';
good_iteration_name = sprintf(char(cat(2,measurementTitle,char(datestr(now,30)))));
% Create a new directory to store the data into and at the end cd back to "root". "Ant_serial_num2" is the "measurement title" in the GUI.
dataDir = sprintf(char(good_iteration_name));
  comments = [comments,' ', num2str(operatingFreq) 'Hz']
%        eval(['mkdir ' dataDir])
          %eval(['cd ' dataDir])
characterizationVoltages = [voltageSet' chan1' chan2'];
characterizationVoltages = num2cell(characterizationVoltages);
  dataVoltages = sprintf(char(cat(2,good_iteration_name,'_charVoltages','.xlsx')));
saveAsFN = dataVoltages; %
%format for xlswrite2- Data, tab name, column names, filename.
headerTemp = sprintf('Voltage %s', voltageSetTo);
colNames = {'DAQ Voltage Setting','VPP-Current', 'VPP-DrvOut',comments};
          % subjectTemperatures also contains oscope voltages.
xlswrite2(characterizationVoltages, headerTemp, colNames,dataVoltages);
cd ..


You cannot use the %#function pragma to refer to functions that are not available in MATLAB code.... ok, so mkdir is out I guess.

I'm using win7, 2011b, 64bit.


why are you using eval?

eval(['mkdir ' dataDir])

You can use the function syntax of mkdir


In addition you use CD, dont do that. It will most likely result in same strange errors:

Hi Friedrich,
I have used both, I tried eval(['mkdir ' dataDir]) to see if the compiler would handle it better. Actually cd works fine with the compiler-compiled version. The cd.. drops me from the compiled directory to the one below it. It would probably cd me into the new directory also if I could create the new directory.

Log in to comment.

1 Answer

Answer by Walter Roberson
on 6 Mar 2012

The first thing I would suspect is that the problem is that you have no idea what directory you are starting in at the time you try to 'mkdir' . You cannot just mkdir() starting from a random place.

The link Friedrich provided should help clarify matters.


another key is the environment variable, set CTF_CACHE_ROOT=c:temp (no spaces around the '=')or where ever instead of the default obscure location. That is where my files and folder were created.

Put this line in your code
and see what it spits out to the console window. Chances are Windows 7 is not allowing your program to make a folder in that folder. Even in folders under c:\Users, you can't always put files and folder just any old place - there are rules. You'd probably be better off specifying where you want files and folder created explicitly rather than using relative paths which could be who-knows-where.

Good points. It was actually creating them, I just didn't know where and it was confusing because it seemed to create 2 data files, one in the new directory created in the user\temp\oscure named location, but another in \documents.

Log in to comment.

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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!