Matlab中是否有空设备?

jxr*_*mos 6 matlab fopen dev-null

我试图找到一个简单的方法来打开日志记录打开和关闭,就像看到了例如一个文本文件,这里在Python.他们的解决方案是使用需要记录的有效文件名,否则使用null设备 'dev/null'.他们正在使用重定向,但我希望使用fopen.

是否有某种方法可以执行以下操作,如果重要的话,哪个单词适用于Unix或Windows系统.

nullFID = fopen('/dev/nul', 'w')
Run Code Online (Sandbox Code Playgroud)

我正在改变的脚本可以通过在某些突发场景中详细记录来获益,在这些场景中我们希望为少量文件提取一个精细的细节级别,但是对于脚本通常所针对的批处理来说,这会变得太大.

jxr*_*mos 4

看起来这可以完成,有人在MathWorks上使用类似的术语“空文件”发布了答案。不确定这是否是有效的术语,但可能是“空设备文件”的缩写。

引用空设备的方式取决于操作系统......

nullFID = fopen( 'NUL:'    ); % Windows
nullFID = fopen('/dev/null'); % UNIX
Run Code Online (Sandbox Code Playgroud)

而且该参考文献似乎与 Matlab 版本有所不同。考虑以下脚本

ver
nullFID = fopen( 'NUL:' , 'w' )
fprintf( nullFID , '12345' )
nullFID = fopen( 'NUL:'  )
fprintf( nullFID , '12345' )
nullFID = fopen('NUL' , 'w' )
nullFID = fopen('NUL' )
Run Code Online (Sandbox Code Playgroud)

以下输出是由两个版本的 Matlab 生成的...

R2011b

>> ver
-------------------------------------------------------------------------------------
MATLAB Version 7.13.0.564 (R2011b)
MATLAB License Number: xxxx
Operating System: Microsoft Windows 7 Version 6.1 (Build 7601: Service Pack 1)
Java VM Version: Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
-------------------------------------------------------------------------------------
MATLAB                                                Version 7.13       (R2011b)

>> nullFID = fopen( 'NUL:' , 'w' )
nullFID = 119

>> fprintf( nullFID , '12345' )
ans = 5

>> nullFID = fopen( 'NUL:' )
nullFID = 120

>> fprintf( nullFID , '12345' )
ans = 0

>> nullFID = fopen('NUL' , 'w' )
Warning: You have chosen a reserved DOS device name for your filename.
Please choose another valid filename
nullFID = -1

>> nullFID = fopen('NUL')
nullFID = -1
Run Code Online (Sandbox Code Playgroud)

R2015a

>> ver
----------------------------------------------------------------------------------------------------
MATLAB Version: 8.5.0.197613 (R2015a)
MATLAB License Number: 1093113
Operating System: Microsoft Windows 7 Professional  Version 6.1 (Build 7601: Service Pack 1)
Java Version: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
----------------------------------------------------------------------------------------------------
MATLAB                                                Version 8.5        (R2015a)

>> nullFID = fopen( 'NUL:' , 'w' )
nullFID = -1

>> fprintf( nullFID , '12345' )
Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.

>> nullFID = fopen( 'NUL:' )
nullFID = 8

>> fprintf( nullFID , '12345' )
ans = 0

>> nullFID = fopen('NUL' , 'w' )
Warning: You have chosen a reserved DOS device name for your filename.
Please choose another valid filename. 
nullFID = -1

>> nullFID = fopen('NUL' )
nullFID = -1
Run Code Online (Sandbox Code Playgroud)