mkdir and the matlab compiler

조회 수: 4 (최근 30일)
Mike
Mike 2012년 3월 6일
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']
%
mkdir(dataDir)
% eval(['mkdir ' dataDir])
cd(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);
pause(2)
%
cd ..
  댓글 수: 3
Friedrich
Friedrich 2012년 3월 6일
Hi,
why are you using eval?
eval(['mkdir ' dataDir])
You can use the function syntax of mkdir
mkdir(datadir)
In addition you use CD, dont do that. It will most likely result in same strange errors:
http://blogs.mathworks.com/loren/2008/08/11/path-management-in-deployed-applications/
Mike
Mike 2012년 3월 6일
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.

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2012년 3월 6일
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.
  댓글 수: 5
Image Analyst
Image Analyst 2012년 3월 7일
Put this line in your code
ctfroot
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.
Mike
Mike 2012년 3월 7일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by