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類似。

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