从控制台窗口运行Compated MatLab时,在应用程序仍在运行时立即返回提示

时间:2018-07-20 19:25:21

标签: matlab

我已经编译了简单的MatLab函数,因此可以从Windows控制台作为命令行应用程序运行它。输入命令及其单个参数后,即使命令仍在运行,提示符也会立即返回,就像在后台运行一样。

有人可以告诉我为什么会发生这种情况以及如何阻止它吗?我希望它的行为像普通应用程序一样,直到完成后才返回提示。

编辑:对不起,我以前没有发布代码,我以为我犯了一个常见错误,并且会很快得到答案。无论如何,这是。

它将一个.mat文件转换为一个.csv文件,然后通过“系统”运行另一个控制台命令以对生成的.csv文件进行快速编辑。几分钟的IO,但没有太多。

我希望以前从未编译过MatLab,所以可能很简单。

function WriteMatToCSV( inFile, overWrite )

if ~exist(inFile, 'file')
     fprintf('Error File not found: %s\n',inFile);
     return;
end

overWriteExisting = 1;
if exist('overWrite','var')
    overWriteExisting = overWrite;
end

% Change file extension
outFile = strrep( inFile, '.mat','.csv');
fprintf('In : %s\n',inFile);
fprintf('Out: %s\n',outFile);

% Overwrite if exists?
if exist(outFile, 'file')
    if ~overWriteExisting
        fprintf('Error File exists: %s\n',outFile);
        return;
    end
end

% Get variable name in the file
matObj = matfile(inFile);
info = whos(matObj);
name = info.name;
fprintf('Found variable: %s\n',name);

% Load the variable from the file
fprintf('Loading mat...\n');
load(inFile);

% Write the variable to .csv file
fprintf('Writing csv...\n');
export(eval(name),'File',outFile','Delimiter',',');

fprintf('Rewriting to remove MatLab bits...\n');
command = 'RewriteMatLabCSV';
command = [command ' ' outFile];
[status,cmdout] = system(command,'-echo');
fprintf(cmdout);

fprintf('Done\n');
end

0 个答案:

没有答案