我们都知道,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指示的状态,也可判定操作系统。如:
- status=system('systeminfo');
- if status==0
- os='windos';
- else
- status=system('uname -a');
- if status==0
- os='linux';
- else
- os='unknown';
- end
- end
另外,“dos”命令和“unix“命令分别用于执行特定操作系统的命令。他们的用法与system类似。