曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)字信號(hào)處理第4部分—在MATLAB中創(chuàng)建GUI

xymbmcu ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-23 10:40 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

poYBAGPzDjmAWUePAAHXyl94SOw398.jpg

本文是DSP Arduino系列的續(xù)篇。上文中,我們介紹了傅里葉變換的基礎(chǔ)知識(shí),并使用MATLAB學(xué)習(xí)了如何將正弦信號(hào)從時(shí)域變換到頻域。這次,在添加了失真濾波器后,我們將在MATLAB中創(chuàng)建一個(gè)簡(jiǎn)單的GUI來記錄我們的語音信號(hào)!

硬件

? Arduino Uno

? 用于Arduino的CJMCU-9812 MAX9812L駐極體麥克風(fēng)放大器開發(fā)板

軟件

? Arduino IDE

? MATLAB

步驟3:應(yīng)用失真濾波器

在前文中,我們已經(jīng)得到了一個(gè)通過了40階低通濾波器的信號(hào)。在此步中,我們需要添加另一個(gè)會(huì)使信號(hào)失真的濾波器。這可以通過MATLAB中的filter函數(shù)來完成。您可能已經(jīng)想到了,我們還需要添加下文所示的系數(shù)。

[s,fe2,bits] = wavread(‘s’);
sound(s,fe2);
pause(9)
b = [0.1662, -0.0943, 0.2892, -0.1227, 0.2348, 0.0180, 0.0415, 0.1388, -0.0616, 0.1290, -0.0434, 0.0420, -0.0010, -0.0009, 0.0032, -0.0015, 0.0056] ;
a = [1.0000, -0.7548, 3.4400, -1.6385, 4.8436, -0.8156, 3.2813, 1.2582, 0.6571, 2.1922, -0.4792, 1.4546, -0.2905, 0.4693, -0.0208, 0.0614, 0.0120] ;
x = filter(b,a,s);
figure
plot(t1,s2,t1,x),grid
title(‘The initial signal vs the distorted signal’);
sound(x,fe2);
pause(9)
audiowrite(‘x.wav’,x,fe2);

請(qǐng)注意,s是指在上一步中應(yīng)用了低通濾波器之后獲得的信號(hào)。在圖1中,藍(lán)色信號(hào)代表原始信號(hào),綠色信號(hào)代表失真信號(hào)。與藍(lán)色信號(hào)相比,綠色信號(hào)具有較低的幅度。

pYYBAGPzDj-AKCv_AAFBEljysY0403.jpg

圖1:重疊信號(hào)

為了進(jìn)一步進(jìn)行檢驗(yàn),我們將使用FFT算法。

為了更好地進(jìn)行比較,我們對(duì)兩個(gè)信號(hào)分別進(jìn)行了繪制。下面的兩個(gè)圖將會(huì)說明在時(shí)域和頻域中兩者之間的差異。


% s si x signals (time-frequency domain)

t1=(0:length(s)-1)/(fe2);
figure
subplot(2,1,1), plot(t1,s),grid
title(‘s signal in time domain(low-pass filter)’);
xlabel(‘Time’)
ylabel(‘Amplitude’)

t2=(0:length(x)-1)/(fe2);
subplot(2,1,2), plot(t2,x),grid
title(‘x signal in time domain(distorted)’);
xlabel(‘Time’)
ylabel(‘Amplitude’)

poYBAGPzDkKAdex-AAGETvYoBcg647.jpg

圖2:時(shí)域中信號(hào)失真前后圖形

在時(shí)域中,圖形發(fā)生了很大的變化:s信號(hào)幅度較小(雖然這兩張圖在視覺可能會(huì)給您一種x信號(hào)具有較高幅值的感覺)。如果您仔細(xì)看一下y軸的比例,就可以看出兩者幅度的差異。對(duì)于這一現(xiàn)象,您可能會(huì)想知道是應(yīng)用了哪種濾波,以及是什么修改方式導(dǎo)致的這些系數(shù)值。

答案可以在頻域中找到:

figure
s1 = abs(fft(s,NS));
subplot(2,1,1), plot((0:(NS-1))/NS*fe2, s1), grid
title(‘Single-Sided Amplitude Spectrum of s(t)’)
xlabel(‘Frequency (Hz)’)
ylabel(‘|s(k)|’)

x1 = abs(fft(x,NS));
subplot(2,1,2), plot((0:(NS-1))/NS*fe2, x1), grid
title(‘Single-Sided Amplitude Spectrum of x(t)’)
xlabel(‘Frequency (Hz)’)
ylabel(‘|X(k)|’)

我們應(yīng)用傅里葉變換來得到等效頻率。正如您在圖3中看到的那樣,y軸對(duì)稱的中心點(diǎn)大約是采樣率的1/2。

poYBAGPzDkWAPTSyAADnRtPLcio050.jpg

圖3:頻域中信號(hào)失真前后圖形

這兩個(gè)信號(hào)具有不同的頻譜

? 頂部圖像

? Y軸值約為800。

? 值達(dá)到2000 Hz后,幾乎沒有信號(hào)。

? 底部圖像:

? Y軸值約為40。

? 值達(dá)到2000 Hz后,可以觀察到仍有信號(hào)。

研究此頻率范圍內(nèi)的樣本點(diǎn)是很困難的。因此,讓我們將目標(biāo)鎖定在2000 Hz左右處,對(duì)該范圍內(nèi)的幅值進(jìn)行研究。

pYYBAGPzDkqAVZ7PAAGEg6Ji3MU756.jpg

圖4:2500Hz附近小范圍頻率內(nèi)圖像

如果我們仔細(xì)觀察幅值變化,可以看出兩個(gè)信號(hào)具有相同的形狀,而它們?cè)趫D3中看起來并不相似。上一張圖像中的兩個(gè)信號(hào)之所以看起來不同是因?yàn)樗鼈兊淖鴺?biāo)軸比例設(shè)置不同。

從兩個(gè)圖中,我們可以觀察到振幅降低了??墒俏覀冞€是不知道濾波器的頻率響應(yīng)是什么,以及它對(duì)我們的信號(hào)帶來了其他什么變化。在這種情況下,我們使用Matlab對(duì)其進(jìn)行繪制。


[h1,w1] = freqz(b,a,NS,fe2);
figure
plot(w1,abs(h1)), grid
xlabel(‘Frequency (Hz)’)
ylabel(‘Frequency response’)

pYYBAGPzDk2AW7jZAACkVfWjZRQ808.jpg

圖5:一個(gè)新型濾波器

這個(gè)新的濾波器稱為帶通濾波器。因?yàn)檫@是第一次使用該濾波器,所以在應(yīng)用之前,我們先了解一下它的一些屬性:

? 可以通過將低通濾波器電路和高通濾波器電路相連接來實(shí)現(xiàn)。

? 應(yīng)用該濾波器時(shí),濾波器通帶中的信號(hào)保持不變,而在頻帶外部的頻率分量將被衰減。

? 高通帶和低通帶上的分量將被衰減。

? 在我們的項(xiàng)目中,驗(yàn)證了2000 Hz的頻率分量發(fā)生了衰減。

? 理想的帶通濾波器具有平坦的通帶,但在我們的應(yīng)用中,如圖4所示,出現(xiàn)了一個(gè)增益(也可能發(fā)生衰減)。我們只能在理論中獲得理想的濾波器。

poYBAGPzDlCAHCsSAACyCoe-pLk462.jpg

圖6:帶通濾波器

您可以看到,圖6中的濾波器和圖5中的濾波器具有相似的形狀。因此,我們已經(jīng)獲得了一個(gè)新的濾波器。

步驟4:創(chuàng)建GUI

作為一個(gè)實(shí)用項(xiàng)目,我們接下來將會(huì)對(duì)自己的語音信號(hào)進(jìn)行處理。對(duì)!這就是我們將要與Arduino相結(jié)合的地方。

poYBAGPzDlKADUFOAADtGJE3S3U121.jpg

圖7:Arduino套件

在本項(xiàng)目中,我選擇了帶有MAX9812L放大器和駐極體麥克風(fēng)的模塊。該模塊具有以下三個(gè)端子

? VCC(2.7V至3.6V之間—由Arduino的3.3V引腳供電)

? GND(接地端—連接到Arduino接地端)

? OUT(本項(xiàng)目中連接到A0)

pYYBAGPzDleAaSFfAAH1ZnqK2Ao607.jpg

圖7:Arduino套件

我們不打算使用Arduino IDE串行監(jiān)視器,而是直接在Matlab中讀取傳感器值。

Arduino 代碼:


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

我們還將使用Matlab來進(jìn)行處理。為了處理語音信號(hào),我們將創(chuàng)建一個(gè)圖形用戶界面。該圖形用戶界面中有兩個(gè)按鈕:

? 藍(lán)色(start) – 用戶開始語音記錄

? 橙色(push button)– 用戶停止通過連接到Arduino的麥克風(fēng)進(jìn)行錄音(關(guān)閉串行傳輸)。

在該程序中創(chuàng)建GUI非常容易,因?yàn)槟梢允褂猛蟿?dòng)功能來繪制連接點(diǎn)。首先,在命令窗口中輸入guide。

pYYBAGPzDlmATAgjAACiboh_rwA502.jpg

圖9:在Matlab中創(chuàng)建GUI

當(dāng)您點(diǎn)擊“Create New GUI(創(chuàng)建新GUI)”時(shí),將會(huì)顯示出來一個(gè)用戶友好界面。Matlab GUI不像C#或其他語言那樣需要較高的編程技能。在這里,您需要選擇要添加的塊,并對(duì)生成的代碼進(jìn)行修改。

poYBAGPzDlyAXYQ2AAEDDzz5YN4175.jpg

圖10:如何在Matlab中創(chuàng)建塊

在左側(cè)菜單中包含了用于您的GUI的不同指令。對(duì)于本項(xiàng)目來說,需要的元素不會(huì)超過三個(gè),因?yàn)槲覀冎皇且獙?duì)語音信號(hào)進(jìn)行顯示而已。因?yàn)槲覀兿M谟涗浐罂梢允褂脭?shù)據(jù),所以將創(chuàng)建一個(gè)包含錄音內(nèi)容的.csv文件,該文件可用于信號(hào)處理。

在我的GUI中,我使用了:

? 坐標(biāo)軸;

? 2個(gè)按鈕;

poYBAGPzDl-ASjh-AADv4IMl63E537.jpg

圖11:GUI設(shè)計(jì)

該按鈕的代碼是根據(jù)按鈕的規(guī)格來構(gòu)建的。整個(gè)代碼將被上傳到GitHub上供您下載。


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

pYYBAGPzDmGAVtA5AAB_AL2MQPU089.jpg

圖12:Matlab應(yīng)用程序中的語音信號(hào)

如果您已經(jīng)完成了這一步,那么恭喜您!到此為止,我們的數(shù)字信號(hào)處理系列教程已經(jīng)結(jié)束了。我們介紹了有關(guān)信號(hào)處理的各種概念。這是一個(gè)非常具有挑戰(zhàn)性的課題,所以如果現(xiàn)在沒有對(duì)所有內(nèi)容都了解得很清楚,也不要?dú)怵H!當(dāng)您覺得在某些概念的理解上出現(xiàn)困難時(shí),您可以從網(wǎng)上大量的資源中獲取更多有關(guān)信息。隨時(shí)歡迎您對(duì)我們的工作進(jìn)行訪問和評(píng)論,并與我們分享您的成果!

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    188

    文章

    2990

    瀏覽量

    232942
  • 數(shù)字信號(hào)
    +關(guān)注

    關(guān)注

    2

    文章

    987

    瀏覽量

    48079
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    672

    瀏覽量

    40608
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    [共享] 數(shù)字信號(hào)處理及其MATLAB實(shí)現(xiàn)

    內(nèi)容簡(jiǎn)介 本書就數(shù)字信號(hào)處理的基本理論、算法及MATLAB實(shí)現(xiàn)進(jìn)行系統(tǒng)的論述。全書共7章,前兩章簡(jiǎn)要介紹了離散時(shí)間信號(hào)與系統(tǒng)及Z變換,3、
    發(fā)表于 07-09 09:31

    數(shù)字信號(hào)處理—理論、算法與實(shí)現(xiàn)

    MATLAB程序可用于求解書中的絕大部分例題并繪制其插圖。除14章外,本書每一章都配有習(xí)題及上機(jī)練習(xí)題。本書闡述了數(shù)字信號(hào)處理的基礎(chǔ)理論與
    發(fā)表于 09-19 08:01

    數(shù)字信號(hào)處理及其MATLAB實(shí)現(xiàn)

    數(shù)字信號(hào)處理及其MATLAB實(shí)現(xiàn)
    發(fā)表于 03-25 15:05 ?23次下載

    數(shù)字信號(hào)處理及其MATLAB實(shí)現(xiàn)

    數(shù)字信號(hào)處理及其MATLAB實(shí)現(xiàn)
    發(fā)表于 03-26 14:13 ?373次下載

    MATLAB下的數(shù)字信號(hào)處理實(shí)現(xiàn)示例

    MATLAB 下的數(shù)字信號(hào)處理實(shí)現(xiàn)示例本部分內(nèi)容是本講義數(shù)據(jù)信號(hào)
    發(fā)表于 05-10 09:57 ?86次下載

    數(shù)字信號(hào)處理教程—MATLAB釋義與實(shí)現(xiàn)》(2版)程序集

    數(shù)字信號(hào)處理教程—MATLAB釋義與實(shí)現(xiàn)》(2版)程序集:dsk04是《數(shù)字信號(hào)處理教程——
    發(fā)表于 10-24 08:42 ?0次下載

    數(shù)字信號(hào)處理教程—MATLAB釋義與實(shí)現(xiàn)》(2版)課件

    數(shù)字信號(hào)處理教程—MATLAB釋義與實(shí)現(xiàn)》(2版)課件:第一章  信號(hào)信號(hào)
    發(fā)表于 10-24 08:44 ?0次下載

    數(shù)字信號(hào)處理及其matlab實(shí)現(xiàn)

    數(shù)字信號(hào)處理基礎(chǔ)知識(shí)介紹 及其matlab實(shí)現(xiàn),非常好的資料
    發(fā)表于 12-21 15:02 ?26次下載

    MATLAB信號(hào)處理詳解_部分4

    MATLAB信號(hào)處理詳解第四部分 有需要的朋友下來看看
    發(fā)表于 12-24 14:04 ?14次下載

    應(yīng)用MATlAB語言處理數(shù)字信號(hào)數(shù)字圖像

    應(yīng)用MATlAB語言處理數(shù)字信號(hào)數(shù)字圖像
    發(fā)表于 12-30 15:19 ?1次下載

    數(shù)字信號(hào)處理及其Matlab實(shí)現(xiàn)

    數(shù)字信號(hào)處理及其Matlab實(shí)現(xiàn),有需要的下來看看。
    發(fā)表于 03-21 10:57 ?0次下載

    Matlab數(shù)字信號(hào)處理課程設(shè)計(jì)的應(yīng)用_李永全

    Matlab數(shù)字信號(hào)處理課程設(shè)計(jì)的引用
    發(fā)表于 12-27 17:52 ?23次下載

    數(shù)字信號(hào)處理及其Matlab的實(shí)現(xiàn)

    關(guān)于數(shù)字信號(hào)處理的書籍 里面含有MATLAB的一些代碼實(shí)現(xiàn)。
    發(fā)表于 05-14 09:22 ?8次下載

    數(shù)字信號(hào)處理3部分—傅里葉變換

    3部分,我們的目標(biāo)是了解如何將正弦信號(hào)從時(shí)域轉(zhuǎn)換到頻域。這個(gè)操作過程很重要,因?yàn)槟梢砸源肆私?b class='flag-5'>在
    的頭像 發(fā)表于 03-10 18:16 ?3979次閱讀
    <b class='flag-5'>數(shù)字信號(hào)</b><b class='flag-5'>處理</b><b class='flag-5'>第</b>3<b class='flag-5'>部分</b>—傅里葉變換

    使用MATLAB進(jìn)行數(shù)字信號(hào)處理-2部分

    Arduino DSP系列的第二部分,我們將繼續(xù)深入研究數(shù)字信號(hào)處理的基礎(chǔ)知識(shí)。我們將學(xué)習(xí)數(shù)字
    的頭像 發(fā)表于 02-24 09:51 ?2360次閱讀
    使用<b class='flag-5'>MATLAB</b>進(jìn)行<b class='flag-5'>數(shù)字信號(hào)</b><b class='flag-5'>處理</b>-<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>