複製鏈接
請複製以下鏈接發送給好友

輸入變量

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

輸入變量簡介

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

輸入變量命名規範

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

輸入變量作用域和生存週期

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

輸入變量類型

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

輸入變量神經網絡輸入變量的選擇

影響預測的因素和數據非常多,如何從大量的影響因素和數據中選擇出對期望輸出影響較大 的一些因素,組成一個有效輸入變量集,成為神經網絡預測方法首先面對的問題。現在對神 經網絡預測模型中輸入變量的選擇尚未提出一種比較系統的方法,一般都根據設計者的經驗選取 [2]  。輸入變量選取有多種方法,一下是一些常見方法的簡介:用相空間嵌法來確定神經網絡的輸入變量。能夠在歷史數據序列中尋找對預報時刻影 響最大的數據,但直接將選擇結果用於預測時效果比較差。OLS法對輸入變量進行正文變化,可求出各因素的單獨貢獻,但該方法不適合處理隨時間連續變化的數據序列,而且計算複雜。有的將自相關函數的概念應用於神經網絡預測中的輸入變量選擇,從歷史數據中選擇與 期望輸出相關度較大的數據集合作為輸入變量集,並通過採用傅里葉轉換來實現對數據自相 關函數的快速計算,增加了該方法的可操作性。
參考資料
  • 1.    周健民.土壤學大辭典:科學出版社,2013.10
  • 2.    楊奎河.基於神經網絡的預測模型中輸入變量的選擇.計算機科學[J],2003:139-143