<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 學(xué)習(xí)LabVIEW(八)——用循環(huán)處理數(shù)組

          學(xué)習(xí)LabVIEW(八)——用循環(huán)處理數(shù)組

          作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
          LabVIEW的G語言中,循環(huán)表現(xiàn)為一個框框。數(shù)據(jù)進入循環(huán)會有一個所謂的“隧道”,數(shù)據(jù)離開循環(huán)也要經(jīng)過“隧道”。隧道的表現(xiàn)形式為循環(huán)框上的一個小方塊。而隧道還可以配置為不同的模式,如下圖所示:

          從上圖看以看出,隧道有三種模式:最終值、索引、連接。配置不同的隧道模式,可以讓循環(huán)擁有不同的功能。索引模式的隧道表現(xiàn)為循環(huán)框上一個里面有一對中括號[]的小方框,最終值模式的隧道表現(xiàn)為實心的小方框。
          索引模式有什么用呢?
          • 如果輸入循環(huán)的數(shù)據(jù)為一個1D數(shù)組,經(jīng)過索引模式的隧道后的數(shù)據(jù)流就成了一個標(biāo)量,此時循環(huán)的作用為:用循環(huán)框內(nèi)的框圖處理數(shù)組中的每一個元素,這種感覺有點類似于MATLAB的arrayfun和Python的map,不同的是,我們可以在循環(huán)里使用移位寄存器來實現(xiàn)一個迭代的運算。輸出端就是反過來的效果;
          • 如果輸入循環(huán)的數(shù)據(jù)為一個2D數(shù)組,經(jīng)過索引模式的隧道后的數(shù)據(jù)流就成了一個1D數(shù)組,循環(huán)每次處理2D數(shù)組的一行(或是一列,我還沒有查清楚LabVIEW是Column-major還是Row-major)。輸出端就是反過來的效果。
          這次我們用循環(huán)實現(xiàn)了一個Mandelbrot圖形的計算。在《xialulee大戰(zhàn)pythonchallenge——level31》中,我們用Matlab實現(xiàn)了計算過程。這里我們利用LabVIEW的G語言實現(xiàn)其核心的迭代算法,至于初始數(shù)據(jù)的構(gòu)造,還是偷懶使用了MATLAB節(jié)點。完整的程序如下:

          上圖的程序中,算法部分嵌套了三層循環(huán)。最外層的循環(huán)用來把輸入的初始矩陣拆成一個一個的1D數(shù)組,中層的循環(huán)用來把1D數(shù)組拆成一個一個的標(biāo)量,在最內(nèi)層則是迭代算法,實現(xiàn)的計算如下所示:
          z = 0
          for k in range(128):
          z = z * z + input
          if abs(z) > 2:
          break
          然后輸出k。
          算法中的迭代表達式(z = z * z + input)是用移位寄存器實現(xiàn)的,就是循環(huán)框上面分立左右的兩個帶有小三角形的方框。
          程序的數(shù)據(jù)流的終點是一個強度圖控件。下面是程序運行的結(jié)果:


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();