輸入變數

輸入變數

輸入變數,亦稱外生變數、驅動變數。是指在模型中,只影響其他變數如輸出變數,而不受其他變數影響的變數。是模型據以建立的外部條件,表現為非隨機變數。輸入變數一般是確定性變數,或是具有臨界機率分布的隨機變數,其數值是在所研究系統的模型之外決定的,其參數不是模型系統研究的元素。輸入變數影響系統但不受系統影響,輸入變數一般是環境變數、條件變數、虛變數等。在土壤系統中,要解決的問題常可以重新闡述如下:如果某些輸入變數發生變化,它們對生態系統的狀態將有什麼影響。模型可以用來預測驅動變數隨時間和空間改變時生態系統所發生的變化。例如,生態毒理模型中輸入變數有向生態系統輸入的有毒物質的量,富營養化模型中的營養物質輸入量,土壤氮素循環模型中的氣候變數,它影響了生物和非生物組分及過程速率。輸入變數有如下特點:①輸入變數的變化對模型系統中的輸出變數直接產生影響,但自身卻由模型系統之外的其他因素來決定。②相對於所構造的聯立方程模型,輸入變數可以視為可控的非隨機模型,從而與模型的隨機誤差項不相關。

基本介紹

  • 中文名:輸入變數
  • 外文名:input variable
  • 學科:計算機
  • 定義:需要輸入的變數
  • 有關術語:變數
  • 領域:程式設計
簡介,命名規範,作用域和生存周期,類型,神經網路輸入變數的選擇,

簡介

輸入變數就是需要輸入的變數,一般是指程式中方法或函式要使用的變數。輸入變數的命名規範和類型和一般變數一樣。輸出變數是程式中方法或函式要輸出的變數。程式中的輸入變數個數一般與程式中的方法或函式所執行的功能有關。輸入變數可以使程式按照功能進行模組化設計,不同功能之間需要調用,可以通過輸入變數來實現。

命名規範

數學當中的量不同,程式設計所用的變數和常量通常都採用多字元的名字,如count或者size。而單個字元的名字一般僅用於輔助性的變數,如i,j,k常作為數組索引的變數。
一些命名規範是作為語法在語言層面強制執行的。在大多數語言當中,變數名不能以數字開頭,不能包含空格符。而標點符號是否允許存在在變數名當中就要視具體語言而定了。很多語言僅僅允許下劃線(_)存在在變數名當中,而禁止其他所有的標點符號;而有些程式語言,特殊字元作為前綴或後綴添加在變數標識符當中來表明變數的類型。變數名的大小寫敏感性也要視具體語言而定。大多數現代語言是大小寫敏感的,一些較老的語言則不敏感。一些語言保留特定形式的變數名用來內部使用,在很多語言中,以兩根下劃線開頭(__)的變數名常充當這種角色。
在語言語法基本的限制以外,進一步的命名風格規範也很有必要。在機器碼層面,是不會使用變數名的,所以計算機並不關心是否採用了準確的名字。正因為如此,變數名完全是作為程式設計師的工具而存在,藉助這個工具程式設計師能更容易的編寫和理解程式。程式設計師通常創建編碼規範,並且堅持這些規範,幫助對變數命名甚至提供精確的命名規劃。較短的名字便於輸入,但是描述能力較差;較長的名字使程式更容易讀懂,變數的意圖更容易理解。儘管如此,冗長的變數名也可能會導致更難理解的代碼。

作用域和生存周期

變數的作用域表示變數在原程式的文本中能被使用的範圍。變數的生存周期表示變數在程式運行過程中具有實際意義的值的時間範圍。變數的作用域事實上是變數名字的性質,而變數的生存周期是變數本身是性質。
變數名字的作用域會影響它的生存周期。
作用域是變數語法方面的性質。多數語言對每一個變數(和其他名目實體)定義明確的作用域,這些作用域在同一個程式中可能不同。變數的作用域是指程式中的特定區域,在這些區域中,該變數的名字是有意義的並且變數是“可見的”。在進入作用域時,變數通常開始它的生命周期;而在離開作用域時,變數往往結束了它的生命周期。例如,某個變數的語法作用域僅在特定的語句塊或者子程式中。只有在某個函式中能訪問的變數則被稱為局部變數,在程式的任何一個地方都能引用的變數被稱為全局變數
生存周期,則是變數在運行時的性質。在運行時,每次變數與值的綁定都具有自己的生存周期。綁定的生存周期是程式執行過程中的一段時間,在這段時間內,變數始終被關聯到相同的值或者記憶體位置。在閉包的情況中,運行中的程式可能進入和離開某個生存周期很多次。
在一些代碼段中,在一個變數的作用域中可能未被賦值,或者它的值已經被銷毀掉了。這類變數常被稱為“生存周期外”或者“未綁定”。在很多語言中,試圖使用未綁定的變數是一個錯誤。在其他語言中,這種行為會產生不可預期的結果,這樣的變數可能被分配一個新的值。與之對照的是,一個變數綁定到一個超過他作用域的生存周期是被允許的,如Lisp的閉包和C語言的靜態局部變數。當程式再次執行到變數的作用域時,變數能再次被使用,但還保持上一次的值。
為了提高空間效率,變數需要的存儲空間可能要等到變數第一次使用時才申請,不再使用後就刪除。為了避免浪費空間,如果變數聲明了但不實際使用,編譯器通常會向程式設計師發出警告。
使變數的作用域儘可能的小,被認為是一個好的編程方式,這樣程式的不同部分就不會因為意外的改變對方的變數而互相影響了。實現上述目標的通常技術是讓程式的不同部分使用不同名字空間,或者通過動態變數作用使用各自的私有變數。
很多程式設計語言使用保留的值(如NULL)表示沒有初始化的變數。

類型

在靜態類型語言中,如Java或ML,每個都變數有一個類型,也就是說只有給定種類的值能存儲到該變數中。一個基本類型的變數只能保存基本類型的值。一個類類型的變數能保存空值NULL,或者保存該類型或其子類型的對象。一個接口類型的變數能保存空值NULL,或者該接口的任何一個實現。一個數組類型能保存空值NULL或者一個數組。
在動態類型語言中,如Python,是值,而不是變數來攜帶類型信息。在Common Lisp中,這兩種情況同時存在:變數在編譯時具有一個類型(如果沒有聲明,就假設這個類型為超類型T);值也有具有一個類型,該類型可以在運行時進行檢查和識別。
變數的類型也允許在編譯時多態決定。但是,這和面向對象的函式調用(在C++中稱為虛函式)的多態不同。
變數常常保存簡單的數據,如整數和字元串。但有些程式設計語言允許變數同時表示多種數據類型。這些語言一般也允許函式參數多態,其函式對變數的操作可同時適用於多種數據類型。例如,函式length可以求一個列表的長度,如果length的類型簽名中包含一個類型變數,就可以實現參數多態。這樣,求列表中的元素個數就與列表元素的類型無關了。

神經網路輸入變數的選擇

影響預測的因素和數據非常多,如何從大量的影響因素和數據中選擇出對期望輸出影響較大 的一些因素,組成一個有效輸入變數集,成為神經網路預測方法首先面對的問題。現在對神 經網路預測模型中輸入變數的選擇尚未提出一種比較系統的方法,一般都根據設計者的經驗選取。輸入變數選取有多種方法,一下是一些常見方法的簡介:用相空間嵌法來確定神經網路的輸入變數。能夠在歷史數據序列中尋找對預報時刻影 響最大的數據,但直接將選擇結果用於預測時效果比較差。OLS法對輸入變數進行正文變化,可求出各因素的單獨貢獻,但該方法不適合處理隨時間連續變化的數據序列,而且計算複雜。有的將自相關函式的概念套用於神經網路預測中的輸入變數選擇,從歷史數據中選擇與 期望輸出相關度較大的數據集合作為輸入變數集,並通過採用傅立葉轉換來實現對數據自相 關函式的快速計算,增加了該方法的可操作性。

相關詞條

熱門詞條

聯絡我們