我已经编译了简单的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