數位訊號處理第4部分-在MATLAB中創建GUI

步驟4:創建GUI

作為一個實用項目,我們接下來將會對自己的語音訊號進行處理。對!這就是我們將要與Arduino相結合的地方。

gui in matlab

圖7:Arduino套件

在本項目中,我選擇了帶有MAX9812L放大器和駐極體麥克風的模組。該模組具有以下三個端子:

  • VCC(2.7V至3.6V之間—由Arduino的3.3V引腳供電)
  • GND(接地端—連接到Arduino接地端)
  • OUT(本項目中連接到A0)
gui in matlab

圖7:Arduino套件

我們不打算使用Arduino IDE串列監視器,而是直接在Matlab中讀取感測器值。

Arduino 代碼:


void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (3.3 / 1023.0);
Serial.println(voltage);
}

我們還將使用Matlab來進行處理。為了處理語音訊號,我們將創建一個圖形化使用者介面。該圖形化使用者介面中有兩個按鈕:

  • 藍色(start) – 使用者開始語音記錄
  • 橙色(push button)– 用戶停止通過連接到Arduino的麥克風進行錄音(關閉序列傳輸)。

 

在該程式中創建GUI非常容易,因為您可以使用拖動功能來繪製連接點。首先,在命令視窗中輸入guide

gui in matlab

圖9:在Matlab中創建GUI

當您點擊“Create New GUI(創建新GUI)”時,將會顯示出來一個使用者友好介面。Matlab GUI不像C#或其他語言那樣需要較高的程式設計技能。在這裡,您需要選擇要添加的塊,並對生成的代碼進行修改。

gui in matlab

圖10:如何在Matlab中創建塊

在左側功能表中包含了用於您的GUI的不同指令。對於本專案來說,需要的元素不會超過三個,因為我們只是要對語音訊號進行顯示而已。因為我們希望在記錄後可以使用資料,所以將創建一個包含錄音內容的 .csv檔,該檔可用於訊號處理。

在我的GUI中,我使用了:

  • 坐標軸;
  • 2個按鈕;
gui in matlab

圖11:GUI設計

該按鈕的代碼是根據按鈕的規格來構建的。整個代碼將被上傳到GitHub上供您下載。


fid = fopen(‘signal.csv’,’w’)
S=1;
s = serial(‘COM9’);
set(s,’BaudRate’,9600);
fopen(s);
fprintf(s,’%s’,’S’);

gui in matlab

圖12:Matlab應用程式中的語音訊號

如果您已經完成了這一步,那麼恭喜您!到此為止,我們的數位訊號處理系列教程已經結束了。我們介紹了有關訊號處理的各種概念。這是一個非常具有挑戰性的課題,所以如果現在沒有對所有內容都瞭解得很清楚,也不要氣餒!當您覺得在某些概念的理解上出現困難時,您可以從網上大量的資源中獲取更多有關資訊。隨時歡迎您對我們的工作進行訪問和評論,並與我們分享您的成果!

附件