3.3 Mathematics

本模組群可對訊號之間或是對訊號的內容作數學計算,模組元件如下:

  1. RemoveDC:消除訊號之直流部份。

  2. Mixer:將輸入之多筆訊號依據相同之時間座標相加(減)。

  3. Multiplier:將輸入之多筆訊號依據相同之時間座標相乘。

  4. Math:可輸入數學方程式,計算輸入訊號。

  5. Diff:計算輸入訊號之微分近似值。

  6. Integrate:計算輸入訊號之累加式積分近似值。

  7. DoMatlab:可將輸入訊號連接至Matlab,編譯並執行Matlab程式碼。

3.3.1 Remove DC

將訊號的直流部份消除,即消除訊號之平移值。

說明

訊號源為,訊號平均值為,而此平均值即為DC,今將,是Remove DC。

參數設定(Properties)

本模組接受實數(real number),單通道(single channel),regular的訊號(signal)、聲音訊號(audio)輸入。參數為DC type,內有四個不同演算法計算訊號在Y軸方向,對y=0的平移量,預設方式是Mean,各計算方式的意義詳列如下表。

DC type參數選項

選項定義

Mean

算數平均數。

DFT_Zeroth_Amplitude

將原資料做傅立葉變換後,定義 X 軸為零,該點之數值為

Trapezoid_integration

以較精確的積分矩型法計算後,再除以總點數為DC。

User_Setting

使用者自行輸入欲上下平移的數值,可以 由此功能設定上下平移量。

User DC Value

輸入平移量。

範例(Example)

建立一個 Y 軸平移過的正弦波訊號,並用 RemoveDC消除平移 。

  1. 以 Source / Sine Wave 建立正弦波,調整 Properties/ Source / AmplitudeOffset 為1.2,可將訊號對 Y 軸往正方向平移 1.2,再以 Viewer / Channel View 觀察。

  1. 將原本訊號 Sine 接上 Compute / Math / RemoveDC,並設定 DCType 下的方法為 Mean,再將結果以 Viewer / Channel Viewer 顯示結果,可發現平移量被消除了。

  1. 可嘗試調整不同之 DC Type,如 DFTZerothAmplitude,但對此範例來說並不影響結果。

  1. 可將訊號接上 Compute / Transform / Fourier Transform 做傅立葉轉換。關掉 FourierTransform 下的 Remove DC,可發現在時間原點的值確實為1.2之2倍。

注意 : 欲做時間橫向的平移量請參考TimeShift模組。

相關指令

Fourier Transform,TimeShift。

3.3.2 Mixer

將多筆資料混成為一筆訊號。

說明

有 N 組訊號源,其中每組訊號的時間軸 t、取樣頻率不一樣,混合後之訊號

,其中 a、b、c 為增益數。

由於本模組假設輸入訊號的時間軸並不一致,因此會先行偵測輸入訊號中最小的取樣頻率,其它訊號再依照重新取樣,統一所有輸入訊號的時間軸後再做疊加。需注意,本模組將第三筆後的混合增益數皆視為 c。

參數設定(Properties)

本模組接受實數(real number),單通道(single channel),regular的訊號(signal)、聲音訊號(audio)輸入,並接受多個訊號輸入。

參數 Gain1、Gain2、GainN 分別為第一、第二及第三筆之後輸入訊號的增益數。此模組與 Math 的差異在於,Mixer 可較快速的處理加減運算,而且可對於訊號長度不同的訊號做加減運算,這一點是 Math 沒有支援。

參數名稱

參數定義

預設值

Gain1

設定第一筆資料的增益數。

1

Gain2

設定第二筆資料的增益數。

1

GainN

設定第三筆以後資料的增益數。

1

範例(Example)

將時間軸相異的正弦波與方波混合為同一筆資料。

  1. 以 Source / SineWave 產生一訊號頻率為5、取樣頻率為 1000Hz、時間長度為 1.5 秒的正弦波;另外再產生一訊號頻率為 10、取樣頻率為 300Hz、時間長度為 1.3 秒,時間起始點為 0.333 秒的方波。然後以 Viewer /Channel Viewer 先觀察波形。

Sine 的參數設定內容 Properties如下圖所示。

Square 的參數設定內容 Properties, 如下圖所示。

設定 Channel Viewer 的 Properties / PlotEditor,將 Sine 的線條加上符號 ' o ',Square 線條加上符號 ' x ',並使用 Zoom X 工具放大兩訊號時間重疊處,可以看到訊號資料點在 X 軸方向上的分佈完全不同。PlotEditor 的設定如下。

將 Channel Viewer 的結果放大如下。

  1. 將此兩訊號相加輸出成一個新的訊號。以 Compute / Math / Mixer 混合,如下圖 Network 所示,Mixer 的第一個 Input 為 Sine,對應 Mixer 的參數 Gain1,第二個 Input 為 Square,對應參數 Gain2,參數預設值皆為 1。再來以 Viewer / Channel Viewer 繪出 Mixer 之波形,其結果如下。

  1. 現在用 Data Viewer 檢視 Mixer 輸出訊號的取樣頻率與訊號時間,Mixer 輸出訊號的取樣頻率(Sampling Frequency) 為 300Hz,訊號時間由 0 秒開始到 1.63333 秒結束。Mixer 的計算方法就是以合併輸入訊號的時間軸作為時間總長度,取樣頻率採取輸入訊號中的最小值,將各輸入訊號乘以對應的加權數累加。因此在使用 Mixer 時對於輸入訊號與輸出訊號的取樣頻率需加以留意。

  1. 注意三筆以上資料依然可以混合,但第三筆以後的加權數皆設定為 GainN,故單一 Mixer 不建議連結三筆以上的資料。建議使用多層 Mixer 以實現三筆以上資料相加,下圖就是利用這個方式累加多筆訊號。

相關指令

Channel switch,Multiplier,Sine Wave,Square Wave。

3.3.3 Multiplier

將多筆輸入訊號相乘。

說明

以數學來表示,有 N 組訊號源,其中每組訊號的時間軸 t、取樣頻率不需要一樣,混合後之訊號

由於本模組假設輸入訊號的時間軸並不一致,因此會先行偵測輸入訊號中最小的取樣頻率,其它訊號再依照重新取樣,統一所有輸入訊號的時間軸後再做相乘。

參數設定(Properties)

本模組接受實數(real number),單通道(single channel),regular的訊號(signal)與聲音訊號(audio)與輸入,並接受多個訊號輸入。本模組無須設定參數,並可對訊號長度、取樣頻率不同的訊號源進行相乘的運算。

範例(Example)

將正弦波與三角波相乘。

  1. 以 Source / Sine Wave、Triangle Wave 建立正弦波與三角波,三角波的 Properties / SignalFreq 調整為 5,以 Viewer / Channel Viewer 觀察其原本波形。

將此兩訊號以 Compute / Math / Multiplier 相乘,輸出波形如下圖所示。

  1. 如同 Mixer,multiplier 允許兩訊號的取樣頻率與時間長度(TimeLength) 不相同,輸出訊號之取樣頻率為輸入訊號最小的取樣頻率,僅在輸入訊號時間軸交集的部份相乘,沒交集的訊號則維持原貌。調整三角波的 SignalFreq 為 100,TimeLength 為 2,則運算結果的 Signal Frequency 將會等於 100,Time length 為等於 2秒。

相關指令

Channel Switch,Mixer。

3.3.4 Math

將輸入之訊號做點對點的數學運算。

操作介面說明

本模組接受實數(real number)、複數(complexnumber),單通道(single-channel)、多通道(multi-channel),regular的訊號(signal)與聲音訊號(audio)輸入。

操作方法為點選Properties / Expressions 欄位右方的按鈕,即會跳出 MultiChannel Expression Editor,視窗介面如下圖所示。

此視窗分作三大部份:輸入訊號清單(Input List)、工具列以及輸出通道欄(Output Channel)。運作流程如下:由輸入訊號清單中選擇訊號,於工具列中的 Expression 欄輸入數學運算式;完成後將算式新增到輸出欄作為輸出訊號其中一個通道。以下就說明各功能。

  1. 輸入訊號清單:

輸入訊號清單(Input List)顯示連接到 Math 元件的輸入訊號。輸入訊號預設為多通道訊號,並以樹狀圖方式列出輸入訊號內個通道(如下圖所示),第一筆輸入訊號在工作列 Expression 中以代號 X1 表示,第二筆訊號以 X2 表示,以下類推,代號後方接中括號,裡面的數字代表該通道編號,例如 X1[1]代表第一筆輸入訊號的第一個通道資料,另外 X1[1]也可以直接用 X 表示。

a. 操作上,雙擊樹狀圖的單筆訊號可將該訊號新增於 Expression 欄中。

b. 倘若僅單純將選取之輸入訊號作為輸出值而不作計算,則可利用鍵將該通道訊號傳至輸出訊號清單。

c. 於樹狀圖上用 checkbox 選擇多個訊號進行多樣化運算;另外也允許直接在 Expression 欄中鍵入訊號代號及運算符號(例如 +、-、........、sin、log 等)。

  1. 工具列

上圖為 MultiChannel Expression Editor 的工具列,Expression 欄位是編輯數學算式的地方。

可清空輸出訊號清單 (Output Channel) 內的所有訊號。

可將 Expression 欄位的數學算式加入輸出訊號清單 (Output Channel);另外

將選擇輸出訊號清單中某個通道內的數學算式,替換為 Expression 中的數學算式。

工具列上其它功用與意義整理如下表。

基本運算工具

功能說明

+

於 Expression 欄中新增加號,等於直接在欄位裡輸入 " + "。

-

於 Expression 欄中新增減號,等於直接在欄位裡輸入 " - "。

*

於 Expression 欄中新增乘號,等於直接在欄位裡輸入 " * "。

/

於 Expression 欄中新增除號,等於直接在欄位裡輸入 " / "。

特殊運算工具

功能說明

此功能可轉換集體運算型式,集體運算型式又分為 By Channel 與 By Input,內容分述如下。

By Channel 代表對多重選取的多個通道(channel)作通道對通道(channel by channel)的運算,計算結果為單通道訊號,例如 Y[1]=X1[1]+X1[2]+X2[1]+X2[2]。

By Input 對多重選取的多個輸入訊號作訊號對訊號(input by input)的運算,計算結果為多通道訊號,例如 Y[1]=X1[1]+X2[1], Y[2]=X1[2]+X2[2]。

π

等於在 Expression 欄中新增圓周率 π (pi)。

t

等於在Expression 欄中新增時間軸的向量 t,為所選取的輸入訊號所對應的時間軸向量。

這兩個工具為一組,下拉式選單是內建函式的清單,選定函式後,按 fn即可於 Expression 欄新增該函式,等於在 Expression 欄中直接鍵入函式(例如sin(X1[1])、abs(X1[1]))。

常用內建函式清單內容與說明如下表。

函式

函式說明

函式

函式說明

abs

取絕對值。

ceiling

小數點以下無條件進位。

floor

無條件捨去小數點以下。

round

小數點以下四捨五入。

sin

作正弦運算。

asin

作逆正弦運算。

cos

作餘弦運算。

acos

作逆餘弦運算。

tan

作正切運算。

atan

作逆正切運算。

sinh

作 hyperbolicsine

(雙曲正弦)。

cosh

作 hyperbolic cosine

(雙曲餘弦)。

tanh

作hyperbolic tan

(雙曲正切)。

exp

exp(x)等於

log

作自然對數。

log10

作 10 為底的對數。

pow

pow(x , a )等於

sqrt

sqrt( x )等於

square

sign

數值大於 0 取 1,

小於 0 取 -1。

truncate

小數點以下,往 0 的方向四捨五入,若 x<0,則 truncate(x) 等於 ceiling(x),若 x>0,則 truncate(x) 為等於 floor(x) 。

conj

輸入為複數訊號,則將取其共軛。

另外提供了 大於 ">" 、小於 "<" 、 大於等於 ">= "、小於等於 "<= "、 等於 " == " 、不等於 " != ",當滿足條件將回傳 1,若不滿足條件則回傳 0。下面範例將會提供如何使用以上功能。

  1. 輸出訊號清單:

輸出訊號清單(Output Channels)顯示目前輸出的各通道及其計算的數學式(Expression)。在輸出欄中通道的順序即為輸出訊號的通道編號順序。利用清單右方的按鈕可編輯輸出訊號之通道, 可調整通道前後順序,利用則可刪除該通道。

我們也可以直接於輸出欄中編輯通道名稱與修改數學式。滑鼠雙擊欲修改名稱的通道欄位,即可編輯該通道的名稱;若要改變數學式,先點選要變更通道的 Expression,再以滑鼠左鍵點擊一次(動作上序似雙擊,但速度較慢),就可直接修改 output channels 的 Expression。

範例(Example)

下面將示範各種運算的方法及功能之使用:

  1. 首先以 Source / Triangle Wave 產生一個三角波,再以 Compute / HHT / AnCAD : EMD 運算,目的是產生一組 Multi-Channel 訊號,以 Viewer / Channel Viewer 繪出,改變 Channel Viewer 的 Properties/Multi-Channel Display 為 List,便能將各通道的訊號分開顯示。

  1. 仿照步驟1,不過將三角波換成方波 ( Square Wave )。

  2. 將 AnCAD : EMD 與 AnCAD : EMD2 連至Compute / Mathematics / Math,再點選 Properties / Expression Editor 叫出操作介面,於輸入清單點擊Input 前的 + 號打開 Input 樹狀圖。

  1. 若要將 X1 的 CH2 加上 X2 的 CH4,先選取 CH2 與 CH4,再點選基本運算工具 " + ",即可將運算式新增於 Expression 欄,也可直接輸入 " X1[2]+ X2[4]"。

  1. 按下鍵即可將 Expression 內的算式傳至輸出欄(Output Channels)。

  1. 下一步,將 X1 的 CH9 乘以相對應的時間 t,再加上X2 之CH1。點擊 X1下面 CH9 兩下,可直接新增 CH9 於 Expression欄,再選擇基本運算工具內的運算元完成算式,或直接輸入 " X1[9]* t + X2[1]"。

  1. 若想對 X1[9]* t 絕對值,可以直接改變 Expression 為 " abs( X1[9]* t )+ X2[1]",或者以游標選擇 " X1[9]* t " 區域,再選取內建函式清單中之 abs,再按下 fn 即可將選取範圍內的算式包入 abs() 中計算,所有的內建函式均可藉上述方法完成。最後須記得點擊鍵將 Epression 欄內的算式傳至輸出訊號清單。

  1. 如果要對兩個以上的輸入訊號作 CH1+CH1、CH2+CH2…之類的計算,則可以利用特殊運算工具的 By Input 選項,由於是 By Input,所以選擇的單位是最上層的輸入訊號,選後該訊號下所有的通道會自動被勾選。以本例而言,選取輸入清單中 X1 與 X2,選擇 By input,再點擊基本運算工具中的 + 號,就將運算式新增至 Expression 欄中。

最後記得點擊鍵將 Expression 欄內的算式傳至輸出訊號清單。

看輸出訊號清單的部份,除先前的兩運算式之外,又新增了 8 個 channel 的計算,由於 X1 有 10 個 channel, X2 有 8 個 channel,故 Math 會選擇 channel 數少的為基準,應用至 CH1 ~ CH8。

  1. 在輸出欄右方的三個按鈕,可針對輸出內的單一通道作上、下移動,以及刪除單一通道的運算式。確定 Output channels 內容後,按 Done 或 Apply 即可完成。回到 Network,用 Channel Viewer 繪出結果。

  1. 將輸出訊號設為 X 與 X1,按下 Apply 後以 Channel Viewer 繪出,可看到兩者一模一樣,這是因為預設變數 X = X1[1]。

  1. 另外 Expression 也可進行大於、小於、等於、不等於運算,首先在 Network 下產生 Noise 元件,NoiseType 調整為Brown,利用 Viewer / Channel Viewer 顯示其結果。

  1. 將 Noise 元件連接 Compute / Mathematics / Math,Math 元件最後以 Channel Viewer 顯示結果。

要將原本 Noise 中,只要振幅介於 0 至 10 的訊號以 Sine 取代 ,其中在 Expression 的方程式內容為:

  1. 將 Math 元件連接至於 Noise 連接的 Channel Viewer,在同一個 Vewer 下比較結果。

相關指令

Viewer,Mixer,Multiplier,Source。

3.3.5 Diff

可對輸入訊號做前後兩元素相減或對訊號微分。

說明

代表長度 N 之訊號,則:

Forward difference:

,若再除以取樣週期 h,則得到微分近似值。

Central difference:

若再除以取樣週期 h,則得到微分近似值。

參數設定(Properties)

本模組接受實數(real number)、複數(complex number),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)與聲音訊號(audio)輸入。相關參數設定如下。

參數名稱

參數定義

預設值

Method

微分方法有 Simple 與 Symmetrized 兩種,Simple 為 forward difference,Symmetrized 為 central difference。

Simple

Differentiate

將結果除以取樣週期 h,得到微分的近似值。

False

Zero Padding

可以將計算後訊號多補一個零,保持於輸入訊號長度相同,選項包含None (不補零)、First (第一位補零)、Last (最後一位補零)。

None

範例(Example)

示範對 Sine Wave 作微分:

  1. 於 Network 視窗下按右鍵,選擇 Source / Sine Wave 產生一個正弦波,並用 Viewer / Channel Viewer 顯示於視窗。

  1. 另點選 Sine 圖示後,按右鍵選擇 Compute / Math / Diff,再用 Viewer / Channel Viewer 繪製計算結果,圖示如右下圖。結果呈現正弦波經 Diff 後變為餘弦波的訊號,但由於參數 Differentiate 預設為 False,所以振幅很小。

  1. 調整 Diff 的 Properties / Differentiate 為True,即可得到微分近似值,以此例來說:Source/Sine Wave 的訊號為,其中 f 是訊號頻率, t 是訊號時間,正弦波微分的值應為。回到本範例 f 是10,= 6.28,所以振幅最大值應為,經比對下圖結果,驗證結果無誤。

相關指令

Integrate。

3.3.6 Integrate

對訊號做累積數值積分。

說明

代表長度為 N 的訊號,是對應的 X 軸(時間)座標,以長方形法(Simple)作數值積分可由下式表示:

若以梯形法(Trapezoidal)計算積分,計算方法等同於 Matlab 中的 " cumtrapz " , 計算式為:

若以辛普森法(Simpson's rule)計算積分,計算式為:

參數設定(Properties)

本模組接受實數(real number)、複數(complex number),單通道(single channel)或多通道(multi-channel),regular或indexed的訊號(signal)、聲音訊號(audio)與數值資料(numeric)輸入。相關參數說明如下表。

參數名稱

參數定義

預設值

Method

數值積分的方法,可選擇 Simple (長方形法)、Trapezoidal (梯形法)與 Simpson (辛普森法)。

Trapezoidal

StartPosition

設定橫軸上的積分起始值。

輸入訊號的起始值

EndPosition

設定橫軸上的積分終點值。

輸入訊號的終點值

Const

設定積分後縱軸方向的平移量。

0

範例(Example)

對正弦波進行積分:

  1. 於 Network 下按右鍵,選擇 Source / Sine Wave 創造一個正弦波,改變其 Properties / SignalFreq 為 1Hz,SampleFreq 為 20Hz,TimeLength 設定為 1 sec,再用 Viewer / Channel viewer 顯示於視窗,圖示如左下圖。

  1. 為了使每個點的位置看的更清楚,點選 Viewer[1]元件下的 Properties / Representation / Plot Elem Editor 的 PlotEditor,會跳出 Plot Element Setting 視窗,選擇 Marker Style 為 ' + ',在訊號線上每個時間點就會畫出「+」號。

  1. 對正弦波作 Compute / Math / Integrate 數值積分,再如步驟1、2 改變 Marker style 為「x」,繪出的圖就是積分後的結果。

  1. 調整 Int 的 Properties / StartPosition 為 0.3,計算結果改變如下圖所示,再使用 DataViewer 看 Int 輸出的訊號資訊,可發現 DataCount 由原本的 21 變為 15,因此須注意改變 Integrate 的參數 StartPosition 與EndPosition 會影響輸出的訊號長度。

相關指令

Differentiate,Sine Wave,ChannelViewer。

3.3.7 DoMatlab

透過 DoMatlab 可將 Visual Signal 元件的資料輸入至 Matlab engine,再執行 Matlab 語法運算,運算之後再傳回 Visual Signal 顯示結果,等同於讓使用者創造出擁有獨特演算法的模組。

參數設定(Properties)

DoMatlab 接受 Visual Signal 所有於元件的輸出格式。元件一但連接 DoMatlab,程式會自動執行 Matlab Command Window 視窗, Command Window 具有基本的 MATLAB 功能譬如 Workspace browser、Path browser 等,操作上使用者必須參閱 MATLAB 說明文件。

須注意執行 DoMatlab 前,系統必須已安裝 The Mathworks, Inc 所出品的 MATLAB version 6.5 以上的版本 ,若系統已安裝 MATLAB,但仍無法執行 DoMatlab,原因可能有四種。

第一可能為 MATLAB 在安裝時沒有被註冊為 COM server。解決方法是進入 WINDOWS 的 [執行],鍵入cmd,然後在 DOS下鍵入” matlab /regserver ”,問題應能解決。

第二可能是在 WINDOWS VISTA 環境變數定義,按一下 [開始],在 [開始搜尋]方塊中輸入 [帳戶],然後按一下 [程式集]下的 [使用者帳號]。如果提示您的系統管理員密碼或確認訊息,請輸入您的密碼,或按一下 [允許];然後在 [使用者帳戶]對話方塊中,按一下在 [工作]下 [變更我的環境變數]。

選擇 [新增],在環境變數名稱欄位輸入 [Matlab],在變數值欄位輸入 [ C: \ Program Files \ MATLAB71 \ bin \ win32], 點選確定即可

第三是在 環境變數 中的 使用者變數,選擇 [新增],並且輸入變數名稱 " MATLAB_RESERVE_LO ",變數值為 " 0 ",如下圖顯示。

第四是在 系統變數 中的 Path,選擇 [編輯],並且在變數值中加入 " C:\Program Files\MATLAB\R2007b\bin\win32 ",上述變數值是以 "Matlab 2007b" 版本為例,如下圖顯示。

DoMatlab 的 Properties 的參數如下圖所示,各參數意義整理如下表。

參數名稱

參數說明

預設值

MatlabEditor

此視窗類似於 M file editor,在欄位右方有按鈕可以呼叫 DoMatlab Editor,撰寫 MATLAB 語法或呼叫 Matlab function。

Column-Vectors

訊號傳入Matlab時,資料排列格式是否為 Column-wise。

True

ServerVisible

是否需顯示MATLAB Command Window

True

DumpOutput

回傳 Matlab 產生的訊息出來。

False

Buffer Length

當 DumpOutput 為 True,會新增此參數,設定回傳訊息字元個數的最大值。

5000

ViewBuffer

當 DumpOutput 為 True,會新增此參數,跳出 Matlab script output dump 視窗列出 Matlab 產生的訊息。

ReferenceInput

若有多個輸入訊號,此參數決定輸出變數之預設時間軸 (Y_DESC) 是要參考那一個輸入訊號。

第一個輸入訊號

AsSource

設定 DoMatlab 是否要轉變為一個訊號源,由 DoMatlab 產生訊號資料。

False

Matlab Editor 是 DoMatlab 的程式碼編輯器,下面將詳細說明 DoMatlab 的輸入、輸出等基本設定。

Matlab Editor 介面說明

上圖為 DoMatlab Editor 的外觀,工具列上的按鈕功能分別依下表。

圖形

參數說明

開啟已儲存的 M file,可以引入 Matlab Editor。

將 DoMatlab Editor 之內容儲存為 Mfile。

關閉 Matlab Editor。

清除編輯區( Script )的文字。

執行Script。

Script 分頁是使用者撰寫 MATLAB 程式的工作區(如上圖),預設的指令是 ' Y=X1; '。Help&Example 分頁(見下圖)則詳細地介紹 DoMatlab 對於輸入、輸出格式的規則,與簡單的範例,以方便使用者查詢

輸入訊號之變數儲存格式

DoMatlab 允許輸入多個訊號源,依照輸入順序,訊號將依序被定義為 X1、X2 … Xn,然後每個訊號到 DoMatlab,DoMatlab會新增五個變數 X、 Xn、Xn_DATA、Xn_DESC、Xn_Freq,DoMatlab 的輸出訊號僅允許一個輸出訊號,定義為變數 Y。下面說明各變數的意義。

X:為方便使用者操作的預設變數,定義為第一個輸入訊號內的第一個通道(1stchannel)值,即X = X1_DATA {1}。

Xn_DATA:定義為第 n 個輸入訊號之完整的輸入訊號值,因訊號可為多通道訊號 ( multi-channel ),所以使用cell array 的格式儲存,不同通道的訊號資料依序存在不同的 cell 內。

Xn:定義為第 n 個輸入訊號之第一個通道的訊號值,即 Xn = Xn_DATA {1},資料以 double array 儲存。

輸入訊號類別可分為三大類,分別為訊號 ( Signal ) (包含時間序列與頻譜分析結果)、時頻分析結果( Spectra )以及數值資料 ( Numeric ),如 Basic statistics 模組的計算結果。下表說明這三大類輸入訊號是如何被存為變數 Xn_DATA。

資料類型

內容格式說明

訊號 (Signal,Spectrum)

如果 Column-Vectors 為預設 True,則訊號為 m x 1的 double array 或 Complex double array ,其中 m 為資料長度,若 Column-Vectors 為 False 則相反。

時頻分析 (Spectra)

如果 Column-Vectors 為預設 True,則訊號為 m x n 的complex double array,其中 m 為時域的離散長度,n 為頻率域的離散長度,每元素即對應到該位置的時間與頻率,若 Column-Vectors 為 False 則相反。需注意時頻分析 ( Spectra ) 資料僅支援單通道。

數值資料 (Numeric)

如果 Column-Vectors 為預設True,則為 m x 1 的 doublearray 或 Complex double array,若 Column-Vectors 為 False則相反。

Xn_DESC 以 structure array 儲存訊號的各項資訊,資訊存於不同欄位( field ),各欄位名稱、Matlab 格式與其意義整理如下表。

欄位名稱

說明

格式

name

顯示輸入訊號名稱。

Char [1 * length]

type

顯示訊號類型,目前有Signal、Numeric、Spectra三種類型。

Char [1 * length]

channel count

輸入訊號的channel數量

Integer

channel names

Channel名稱,如CH1。

Char array [nch *max(length)]

lengths

Channel 中的資料長度。

Integer array [ndim∙1]

starts

訊號起始的時間點,對 Numeric 來說此欄無意義。

Double array [ndim * 1]

intervals

訊號的取樣週期,對 Numeric 來說此欄無意義。

Double array[ndim *1]

units

訊號X軸的單位可能為時間或頻率單位。

Char array [ndim * max(length)]

formats

訊號時間軸的格式,目前有 regular 與 Indexed。

Char array [ndim * max(length)]

coords

輸入訊號X軸的座標值,對訊號(signal)與時頻(spectra)來說是時間,對頻譜(spectrum)來說是頻率。

Double array [ndim* max(length)]

註:Char 為字串,Length 為字元或數值長度,ndim 是矩陣維度(若訊號為 Numeric),nch 是通道數量,max 為最大值。

Xn_FREQ 儲存輸入訊號的取樣頻率。若資料與取樣相關(如 Signal,Spectra ),取樣頻率會儲存至 Xn_FREQ,若資料無關取樣( 如頻譜 Spectrum、數值 Numeric),則 Xn_FREQ 會儲存 1。

輸出訊號之變數儲存格式

變數 Y 是 DoMatlab 的輸出變數,訊號格式儲存在變數 Y_DESC,內容與輸入訊號的 Xn_DESC 相同。Y_DESC 預設值與 DoMatlab 的 Properties / ReferenceInput 設定的輸入訊號格式相同,使用者也可自行修改 Y_DESC 內容,DoMatlab 最後會依據 Y_DESC 的設定決定輸出訊號為何種訊號。下表整理 Y_DESC 每個欄位的意義、預設值與必要性。

欄位名稱

說明

必要性

預設

name

顯示輸入訊號名稱。

Optional

DoMatlab

type

顯示訊號類型,目前有Signal、Numeric、Spectrum、Spectra。

Optional

Signal

channel names

Channel名稱,如CH1。

Optional

starts

訊號起始的時間點,對Numeric來說此欄無意義。

Optional

0

intervals

訊號的取樣週期,對Numeric來說此欄無意義。

Required

units

訊號的單位可能為時間或頻率單位。

Optional

sec

formats

訊號時間軸的格式,目前有regular、indexed。

Optional

regular

coords

輸入訊號 X 軸的值,對訊號(signal)與時頻(spectra)來說是時間,對頻譜(spectrum)來說是頻率。

Required

(若Format 是 Indexed)

Indexed

範例(Example)

以下三個例子示範 DoMatlab 的操作。

DoMatlab 基本變數結構

  1. 先以 Source / SineWave 與 Square Wave 產生兩組訊號,其中 Square Wave 後連接 Compute / HHT / EMD 產生一組多通道 ( multi-channel ) 訊號,Sine 與 EMD 都連接至DoMatlab。

  1. 產生 DoMatlab 元件後會自動跳出 Matlab Command Window,先在 MatlabCommand Window 中鍵入 ' whos ',或按下該視窗工具列上的 Workspace browser 查看目前 Matlab 的變數有那些。

因有兩筆輸入訊號,因此DoMatlab 定義了 X1 與 X2 兩組變數群,X1 為 single channel 的 Sine wave,X2 為 multi-channel 的 EMD 訊號,而預設變數 X 則為第一個輸入訊號的第一個通道值,我們可以在Matlab script editor 中以 ' plot ' 繪出 X 與 X1。

鍵入指令後,直接按下或者關閉此 Editor,便會開始執行 DoMatlab,圖形如下,兩組訊號完全重合。

但由於還沒有定義輸出訊號 Y,程式會跳出錯誤訊息提醒使用者輸出訊號尚未定義。

  1. 若需要查詢輸入訊號之基本資料。譬如在 Command Window 中鍵入 X2_DESC,按下 Enter,就能得到輸入訊號 X2 的資料。

  1. 步驟 3 的查詢也可利用 DoMatlab 的參數 DumpOutput 達成。先將DoMatlab Editor 之內容改為 X2_DESC,並保留 Y = X1; 以定義輸出訊號(如下圖)。

關閉 Editor 並將 Properties / DumpOutput調為 True,調整DumpOutput 之後 DoMatlab 會把 Command Window 所出現的訊息記錄下來。

Properties / Viewbuffer 可觀看 DumpOutput 的記錄,這樣在執行 DoMatlab 時若出現錯誤 ,仍然能得到 Matlab 產生的錯誤訊息。

  1. 這裡將示範參數 ReferenceInput 的意義。回到程式的 Network,點選 Sine,將 Properties / Time Unit 設為 min (分鐘),SamplingFreq 調為 300,TimeStart調為 0.5。

然後再開啟 DoMatlab Editor,鍵入 Y_DESC,關閉 Editor 之後用 ViewBuffer 看Matlab輸出的訊息。

發現雖然在 Matlab Editor 中並沒有設定輸出訊號,即變數 Y,但是 Y_DESC 的部份內容已經依照參數 ReferenceInput 作了設定,如下圖 Y_DESC.starts、 Y_DESC.intervals、Y_DESC.units、Y_DESC.coords 都跟 ReferenceInput (Sine)相同。

注意DoMatlab 的參數 ReferenceInput 與其它元件(Merge to Multi-Channel、Merge to Complex、Math)的 ReferenceInput 在運作上略有不同,此參數在 DoMatlab 是作為預設輸出訊號的時間軸座標;在其它元件則會直接將所有輸入訊號的時間軸座標值替換為 ReferenceInput 設定的訊號時間軸座標值。

使用DoMatlab呼叫已存在之M-file

下面示範如何將已編寫好的 M-file,藉由 DoMatlab 執行。假設有一個檔名為 round.m 的 M-file 儲存在路徑[ C:\ M file]中,其內容為 B = round2 ( 10 * A ) / 10,對 A 小數點以下一位做四捨五入。現在要將 A代入 X2 第一個通道的訊號資料計算結果,其步驟如下。

  1. 首先在 Editor 中鍵入 cd ( ' C : \ M file ' ),把路徑 ( current directory ) 設定至 C : \ M file 資料夾,並將變數 X2_DATA 的第一個通道設為 A。

  1. 於 DoMatlab Editor 中輸入 round2 以執行此 M-file,須注意 round2 的輸出變數為 B,而 DoMatlab 的輸出變數為 Y,因此最後需將 B 代入 Y 中。

  1. 關閉 Editor,並以 Viewer / Channel viewer 繪出 DoMatlab結果。可看到對 EMD 第一個通道中的資料做四捨五入的結果。

使用 DoMatlab 產生新的Source

  1. 以 Compute / Math / DoMatlab 產生一個 DoMatlab,將 Properties / AsSource調為 True,可將 DoMatlab 由計算元件變為訊號源元件,並由紅色變成青綠色,原本藍色的輸入埠也消失。

  1. 在 Matlab Command Window 中鍵入" whos " 查詢變數的結果如下圖,因為沒有輸入資料,變數僅有 Y_DESC,因此需先創造輸出變數 Y,再將資料格式之設定填入變數 Y_DESC 內。

  2. 接下來以 Properties / MatlabEditor 產生訊號。藉由設定Y_DESC,基本上 DoMatlab 可以產生所有格式的資料。本步驟示範產生一個 impulse signal。新開一個 Project 並重覆步驟 1 產生 DoMatlab source, 然後由 Properties / MatlabEditor 進入編輯頁面。

    然後在編輯視窗下鍵入程式碼以產生一個 Impulse 訊號,程式內容如下。

    建立變數 p = 0.001 作為取樣週期,變數 t 是各訊號資料點對應的時間,變數 n 是訊號長度,變數 Y 就是輸出訊號,所有資料點的值先設為 0,並在訊號長度約一半的位置將值設為 1,這樣輸出訊號 Y 的數值部份已經創造完成。接下來需設定訊號的時間軸定義變數 Y_DESC,程式碼如下:

    DoMatlab 為方便使用者操作,已預設輸出訊號的 type 為 Signal、開始時間 starts 為 0、時間單位 units 為 sec、離散格式 formats 為 regular 等參數,因此預設的參數值就是上圖被 comment 的部分,使用者僅需設定取樣週期 Y_DESC.intervals,就可以把 Y 輸出。現在關閉 Matlab Editor 回到 Network,在 DoMatlab 後面接上 Channel Viewer 可以看到產生了一組 Impulse 訊號。

  1. 本步驟利用 Matlab 內建的函式 peaks產生大小為 49 x 49 的矩陣,並將其訊號格式設為時頻分析資料 (Spectra) 輸出。新開一個 Project,按照步驟 2 產生 DoMatlab 訊號源,並打開 Properties / MatlabEditor。先產生一個 peaks 作為輸出訊號 Y。

    然後如下圖內容定義 Y_DESC 的所有欄位。

作法說明如下:

設定項目

程式碼

說明

輸出資料名稱

Y_DESC.name = ‘PEAKS’;

設定訊號名稱為PEAKS。

輸出訊號類別

Y_DESC.type = 'Spectra' ;

設定訊號類別為Spectra。

x軸、y軸之離散點個數

Y_DESC.lengths=[49,49];

因為Y是二維矩陣,所以需依序設定列(row)與行(column)的長度;如果對應 Spectra 對兩軸的定義的話,列代表不同時間,即 x 軸;行代表不同頻率,即 y 軸。

x軸、y 軸起始點

Y_DESC.starts=[0 0];

設定兩軸之起始值都為零。

x軸、y 軸之的間隔

Y_DESC.intervals =[1 1];

將兩軸的間隔均設為1。

x軸、y 軸之單位

Y_DESC.units = [ ' sec ' ; ' Hz '];

設定x軸之單位為秒,y軸的單位為Hz。

x軸、y 軸之離散方式

Y_DESC.formats=[ ' Regualr ' ; ' Regular '];

設定兩軸的離散方式都為 regular 等間隔分布。

上表之 X 、 Y 軸與行 、 列的關係以 Column wise 為前提,然而參數Y_DESC.coords 只有當座標軸格式是 Indexed 才必須設定的參數,在此例無須設定。

關閉DoMatlab Editor 後開始執行 DoMatlab,回到 Network 視窗,此時點選 DoMatlab,看 Properties /OutputDataType,輸出訊號格式為 Real Single-Channel Spectra of Rank-2(regular:regular) Data,而且能夠以接上 Viewer / Time-Frequency Viewer 畫出時頻圖。

相關指令

Differentiate,Integrate。