在Matlab中实时显示Perl脚本的输出
我有一个matlab函数,它调用一个Perl脚本,将一个大文本文件转换成二进制文件,以便在matlab中使用。有关Perl脚本的详细信息,请参见此处: 我的Matlab函数看起来像这样在Matlab中实时显示Perl脚本的输出,perl,matlab,Perl,Matlab,我有一个matlab函数,它调用一个Perl脚本,将一个大文本文件转换成二进制文件,以便在matlab中使用。有关Perl脚本的详细信息,请参见此处: 我的Matlab函数看起来像这样 function convertMyData(dataFileName) %Do some checks on the data disp('Done Checking Stuff!'); %Process data file with Perl perl('myPerlScript.pl',dataFile
function convertMyData(dataFileName)
%Do some checks on the data
disp('Done Checking Stuff!');
%Process data file with Perl
perl('myPerlScript.pl',dataFileName)
% More Processing on the Binary output from Perl
disp('All Done!');
perl脚本中有一些打印语句显示脚本的进度,因为转换可能需要几分钟的时间。大概是这样的:
while ($line = <INFILE>) {
if ($lineCount % 100000 == 0){ #Display Progress every 100,000 lines
print "On Line: ".$lineCount."\n";
}
#PROCESS LINE DATA HERE
$lineCount ++;
} # END WHILE <INFILE>
print "Finished Reading: ".$lineCount." Lines\n";
while($line=){
如果($lineCount%100000==0){#每100000行显示一次进度
打印“联机:”.$lineCount.\n”;
}
#这里是生产线数据
$lineCount++;
}#中途结束
打印“已完成阅读:”.$lineCount.“行\n”;
问题是,在Matlab中,脚本完成后,我所有的“On-Line:XXXXX”print
语句都会转储到Matlab的默认ans
变量中,而不是像Matlab的disp()
函数那样在提示符处实际显示
那么,如何(如果可能的话)让外部程序的输出在运行时显示在Matlab提示符下呢?我认为你做不到。MATLAB将控制传递给perl解释器,然后返回结果 有一种变通方法对我有效。首先添加
本地$|=1在perl脚本中编码>
以启用标准输出自动刷新。在任何输出到标准输出之前。(例如,有关刷新缓冲区的更多详细信息,请参阅。)然后使用system
函数调用perl:
system(['"path_to_perl\perl.exe" test.pl ' dataFileName]);
如果您的perl解释器位于带有空格的路径中,则双引号非常重要。尝试使用内置的
perl
命令。它将运行perl解释器并返回结果。我认为您需要将输出放入名为result
的变量中
从文件中:
result=perl(…)返回尝试对result进行perl调用的结果
我有一个类似的问题,古尔带我去问你的问题 最后,在windows上,我使用以下matlab代码,因此解决了我的问题
cmdString = 'start /WAIT ';
cmdString = [cmdString 'C:\Strawberry\perl\bin\perl extract_tti_trace.pl "' fullname '"'];
dos(cmdString)