Matlab系统信息、系统命令和跨平台

我们都知道,matlab是用java写的,因此它可以利用java的跨平台特性实现matlab软件自身的跨平台运行。同时,matlab语言也是平台无关的,所以我们使用matlab语言编写的程序在不同操作系统下的matlab中都可以运行。但这只是一般而言,事实上当跨平台运行时,还是有一些问题不得不注意。一个最明显的例子就是路径提示符,在windows下是“\”,而在linux下是“/”,如果在linux下编写程序时用了“/”,那么拿到windows下去运行就会出错。另外还有字符编码等问题。

如果使用了这些与平台有关的特性,那么为了使自己的程序在别的操作系统下仍能正常运行,需要在程序中判定操作系统的类型,并为不同操作系统采取不同的策略。matlab里用于判断操作系统类型的命令是computer,这个命令可以获得操作系统的类型、32位还是64位,little-endian还是big-endian等信息,它的语法如下:

str = computer
archstr = computer('arch')
[str,maxsize] = computer
[str,maxsize,endian] = computer

不带任何参数的computer命令返回的结果str是表征当前操作系统类型的字符串(见下图),而使用‘arch‘参数时使用另一种形式表示,而maxsize返回的是在这个操作系统中matlab的矩阵最多允许存储多少个元素,endian表示是little-endian还是big-endian。

需要注意的是,某些情况下,64位系统中可以同时运行64位和32位版本的matlab。这时computer命令返回的信息就与当前正运行的matlab版本有关。

另外,还可以使用ispc、isunix、ismac三个函数来判断当前系统是否是windows、unix/linux、mac系统。注意对于mac系统,isunix和ismac返回值都是true。

matlab还提供了查询和修改系统环境变量的功能:getenv和setenv。在windows下使用getenv('OS')命令的结果为“Windows_NT",而在linux下因为没有该环境变量,返回结果为空字符串,也可用来判断操作系统类型。

system函数用于执行一条系统命令,其语法为:

system('command')
[status, result] = system('command')
[status,result] = system('command','-echo')

 其中'command'是系统命令,status用于指示运行结果,如果运行成功则返回0,否则为非零值。运行成功时result为命令的返回结果(输出信息),失败时result包含错误信息。‘-echo‘选项用于将运行时输出的信息输出到matlab的command窗口中。

使用system命令来执行某操作系统特有的命令,并结合status指示的状态,也可判定操作系统。如:

  1. status=system('systeminfo'); 
  2. if status==0 
  3.    os='windos'
  4. else 
  5.   status=system('uname -a'); 
  6.   if status==0 
  7.       os='linux'
  8.   else 
  9.        os='unknown'
  10.    end 
  11. end 

另外,“dos”命令和“unix“命令分别用于执行特定操作系统的命令。他们的用法与system类似。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章