新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > labview循環-移位寄存器妙用

        labview循環-移位寄存器妙用

        作者: 時間:2017-01-06 來源:網絡 收藏

        1. For循環位于函數→編程→結構→For循環,如圖:

        從圖中可以看到,For循環有兩個端子
        計數端子:要執行循環的次數,可用于For循環內部的循環計數
        重復端子:已執行循環的次數,可用于For循環內部的重復計數
        For循環應用舉例:產生10個隨機數,并把最后一個顯示出來。
        步驟如下:
        1. 放置一個數值顯示控件到前面板,并改名為隨機數。
        2. 放置For循環到程序框圖,如圖:

        3.放置隨機數函數到程序框圖,并連線4.計數端子上單擊右鍵,選擇創建常量,并輸入10,如圖:

        5.運行程序,便可在前面板上看到結果。 6.因為程序的運行的速度非常快,我們無法一個一個地看清所產生的10個隨機數,我們可以在程序框圖中添加時間延遲控件。它位于函數→編程 →定時→時間延遲,如圖:

        7. 放置它到程序框圖上,選擇延遲的時間,即兩次循環之間的時間間隔。如圖:

        8. 將時間設置為1.000,點擊確定即可,再運行程序就可從前面板上看到所產生的隨機數了。

        移位寄存器

        移位寄存器用于For循環或While循環中從一個迭代傳輸數據到下一個迭代,它由循環垂直邊框上一對反向相反的端子組成,在邊框上單擊右鍵,選擇添加移位寄存器,就可進行添加。如圖:

        右端子(帶向上箭頭的矩形)在每完成一次迭代后存儲數據,移位寄存器將上次迭代的存儲數據在下一次迭代開始時移動到左端子(具有向下箭頭的矩形)上。移位寄存器可存儲任何數據類型,包括數字,布爾,字符串和數組,但連接到同一個寄存器端子上的數據必須是同一類型。移位寄存器的類型與第一個連接到其端子之一的對象數據類型相同。

        下面是1+2+3+4+…+100的程序,如圖:

        說明:進行第一次運算的是0+0,For循環中的重復端子是從0開始計數,移位即寄存器在沒有初始化的情況下,默認的數值是0,所以第一次運算的是0+0,第二次運算的是寄存器的0與重復端子的1相加,所以循環要進行101次。而計數端子輸出的數據始終是101。
        移位寄存器的初始化:移位寄存器的初始化是非常必要的,因為只要用戶不退出VI,移位寄存器便可記錄上次運算完時的結果,所以上面的程序在第二次執行時輸出的結果不是5050,而是10100!添加初始化即可,如圖:

        下面在舉幾個復雜一點的例子。

        例一:計算一組隨機數的最大值和最小值

        1. 新建一個VI,在前面板上放置一個波形圖標,它位于新式→圖形→波形圖表,用它來記錄產生的隨機數。同時在前面板上放置兩個數值顯示控件“最大值”和“最小值”,用來顯示隨機數中的最大值和最小值。
        2. 在程序框圖中,放置一個For循環,設置循環次數為50次。單擊邊框選擇添加兩個移位寄存器,分別初始化為0和1。
        3. 放置隨機數函數和最大最小值函數與程序框圖中,其中最大最小值函數位于編程→比較→最大值與最小值。然后連線。如圖:

        運行,便可在前面板上看到結果,如圖:

        例二:計算

        1. 在前面板上放置一個數值輸入控件“階次n”和一個數值顯示控件“求和結果”
        2. 在程序框圖上放置兩個For循環嵌套結構,外層循環的計數端口與“階次n”連接,輸出是各個數的階乘所組成的一個數組。它的重復端子加1作為內層循環的循環次數,內層循環利用一個移位寄存器實現階乘運算,移位寄存器的初始值設為1。
        3. 同樣在程序框圖的右邊在放置一個For循環結構,它的計數端子沒有任何連接數據,使用的是自動索引功能。這個循環的作用是對由階乘所組成的一個數組進行索引,對索引出的各個元素進行求和計算,最后將計算結果輸出給“求和結果”。
        4. 完成連線,如圖:

        運行結果如圖:

        例三:計算自然對數中底數e的近似值。

        算法:

        步驟:

        1. 新建一個VI,打開前面板,添加兩個數字顯示控件,分別表示”近似值e”和“臨界階次N”。
        2. 切換到程序框圖,放置一個While循環,將條件端子的條件改為“真時停止”。在它內部再放置一個For循環,計數端子與While循環結構的重復端子加1后連接。右擊For循環邊框,添加移位寄存器,并初始化為1,For循環結構的功能是計算各個數的階乘。
        3. 計算各個數階乘的倒數,添加倒數函數,它位于函數→編程→數值→倒數。
        4. 添加比較函數,將它的階乘的倒數與10^-5比較,比較結果連接到While循環結構的條件端子上,如果小于則返回“真”,停止循環,否則返回“假”繼續循環。
        5. 由于While循環默認的是不能夠自動索引功能,而程序中需要累加保存每次計算的階乘,這就需要在輸出通道上選擇“啟用索引”,實現自動索引,將各個元素累加成為一維數組。
        6. 在程序框圖右邊再添加一個For循環,它的功能是進行自動索引求和,需要主機的是它的移位寄存器被初始化為1,這是由近似算法所決定的。將輸出結果送給“近似值e”。
        7. 完成連線,并運行程序。如圖:

        運行結果,如圖:

        例四:實現對隨機數進行平滑濾波。通過對4個連續的隨機數求其平均值來實現。

        1. 新建一個VI,在前面板上放置兩個波形圖表,一個為“原始波形”,一個為“濾波后波形”。
        2. 在程序框圖上放置一個While循環,在邊框添加一個移位寄存器,然后在左邊的寄存器上單擊右鍵,選擇“添加元素”,一共添加3個。如圖:
        3. 添加隨機數產生函數,并添加符合運算,將連續產生的4個隨機數相加,相加的結果除以4。
        4. 放置循環定時函數,定義循環時間為100ms。
        5. 完成連線,在While循環的條件端子處添加輸入控件。如圖:

        運行結果:


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 登封市| 万山特区| 东明县| 永清县| 荔波县| 丰城市| 韩城市| 东港市| 洞头县| 宜川县| 贵南县| 弥勒县| 台江县| 淳化县| 长武县| 丁青县| 高要市| 抚松县| 图片| 盐亭县| 洪雅县| 虹口区| 屯门区| 濮阳县| 肇州县| 台北县| 宜阳县| 城市| 惠来县| 衡东县| 沙河市| 龙岩市| 大足县| 皋兰县| 岢岚县| 秦皇岛市| 上饶市| 华容县| 遂宁市| 乐业县| 横山县|