色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于用MATLAB 實現簡易鋼琴 App的教程分享

MATLAB ? 來源:djl ? 2019-09-11 15:22 ? 次閱讀

MATLAB 是科學計算軟件,同時也提供了圖形、聲音等多媒體展示特性和人機交互特性。利用這些特性,很容易完成復雜的任務,例如寫一個鋼琴 APP,將電腦的鍵盤當成鋼琴的琴鍵,發出悅耳的聲音。

實現以上功能的核心代碼和語法知識包括:

腳本和函數的概念

全局變量

switch流程

sound函數

figure的屬性和回調函數

這些都可以在 MATLAB 基本語法的幫助文檔(中文)中找到詳細說明:

將代碼打包成 App 需要用到 MATLAB Compiler:

首先,要知道 MATLAB 中“發聲”的方法,最簡單的是 sound 函數。這里將聲音的采樣頻率設為和一般 mp3 文件一樣的 44100 Hz,將一個音符的時間設定為 0.4 s,以音階 do 的頻率 261.63 Hz 為例,發出一段聲音。聲音的包絡線,其目的在于模擬一個音符漸響和漸輕的過程。

Fs=44100; %mp3標準采樣品頻率

T=0:Fs^-1:4e-1; %假定每個聲音持續0.4s

A=sin(2*pi/8e-1*T); %聲音振幅包絡

a=A.*sin(2*pi*261.63*T); %do的時域波形

sound(a,Fs)

也可以用 plot(T,a) 觀察波形。

關于用MATLAB 實現簡易鋼琴 App的教程分享

對于其他音階,設定不同的頻率,于是就可以獲得一系列的音符,他們隨時可以放進 sound 中進行發聲。

a=A.*sin(2*pi*261.63*T);

s=A.*sin(2*pi*293.66*T);

d=A.*sin(2*pi*329.63*T);

其次,要知道 MATLAB 中怎么用鍵盤實時控制,這樣才是一個真正的鋼琴 App。較為簡單的方法是利用 figure 的 KeyPressFcn 屬性。建立一個圖形,在選中圖形的情況下,只要鍵盤被按下,就會執行一個函數(通常稱為回調函數),在這個函數中通過 sound 發聲。

fig=figure('KeyPressFcn','sound(a,Fs)');

再次,要在回調函數中判斷剛才按下的是哪個鍵,并決定讓 sound 發出哪個聲音。這是一個典型的 switch 流程。而 switch 的判斷依據則是 figure 的 'CurrentChar' 屬性,可以通過 get 函數來獲得。

args=get(fig,'CurrentChar');

switch args

case'a'

sound(a,Fs)

case's'

sound(s,Fs)

此時,顯然回調函數不會那么簡單,需要單獨封裝并命名,例如叫mysound。而為了使剛才定義的Fs等變量可以在mysound中使用,需要聲明他們為全局變量,即:

function mysound

global Fs z x c ……

最后,進行適當的美化,通過 rectangle 函數畫出矩形琴鍵,通過 text 函數標注音階和鍵盤的對應。同時,在回調函數中,根據不同的鍵盤輸入,對矩形進行一定的顯示變化,通過 pause 函數控制這種變化的持續時間,就很像一個鋼琴 App 了。

附件使用方法:在 MATLAB 工作路徑中,放置 mymusic 腳本和 mysound 函數兩個文件,在 Command Window 中運行 mymusic,按鍵盤發聲。

當然,也可以繼續在 Command Window 中運行。

sound([a a g g h h g zeros(size(a)) f f d d s sa],Fs)

來聽一小段音樂,enjoy~

App 如何脫離 MATLAB 運行?這里需要用到 MATLAB Compiler,僅需點擊幾次鼠標即可:

點擊:APPS -> Application Compiler

關于用MATLAB 實現簡易鋼琴 App的教程分享

點擊:Add main file,選擇 mymusic

點擊:Files required for your application to run,選擇 mysound

這兩步的目的是告訴 MATLAB 需要打包的腳本和這個腳本調用的函數。

關于用MATLAB 實現簡易鋼琴 App的教程分享

點擊:package,一路確定即可。

軟件打包完成后,可以關閉 MATLAB。在彈出的 for_testing 目錄下找到 mymusic 的 exe 文件,雙擊即可執行。

這樣就完成了一個鋼琴 App,可以分享給其他小伙伴。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人機交互
    +關注

    關注

    12

    文章

    1213

    瀏覽量

    55464
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28439
收藏 人收藏

    評論

    相關推薦

    分享兩則MATLAB和Simulink助力教學案例

    和 Simulink 助力教學案例:南方科技大學無線通信創新教學實驗室負責人吳光博士使用 AI 推動前沿通信教學創新,以及東南大學電氣工程學院胡秦然教授通過 MATLAB 實時腳本和 App 設計工具實現教學模式創新。
    的頭像 發表于 12-05 16:46 ?429次閱讀
    分享兩則<b class='flag-5'>MATLAB</b>和Simulink助力教學案例

    verilog設計之基于basys3實現簡易分秒數字鐘

    基于basys3實現簡易分秒數字鐘
    發表于 09-03 14:15 ?0次下載

    matlab纜索動力學?

    關于這個我想獲得細纜在水中的張力和構型的matlab求解,編程時候這個向量我怎么辦
    發表于 08-29 15:57

    基于MATLAB的通信系統設計

    在通信系統設計領域,MATLAB作為一款強大的數學計算與仿真軟件,廣泛應用于信號處理、通信系統建模與仿真等方面。本文將詳細介紹一個基于MATLAB的通信系統設計方案,包括系統架構、各模塊功能實現及相應的
    的頭像 發表于 07-18 15:52 ?1718次閱讀

    利用Matlab函數實現深度學習算法

    Matlab實現深度學習算法是一個復雜但強大的過程,可以應用于各種領域,如圖像識別、自然語言處理、時間序列預測等。這里,我將概述一個基本的流程,包括環境設置、數據準備、模型設計、訓練過程、以及測試和評估,并提供一個基于Matlab
    的頭像 發表于 07-14 14:21 ?2406次閱讀

    matlab預測模型怎么

    MATLAB預測模型是一種基于統計和數學方法的預測工具,廣泛應用于各種領域,如金融、氣象、生物醫學等。本文將介紹MATLAB預測模型的使用方法。 數據預處理 數據預處理是預測模型建立的第一步,主要目
    的頭像 發表于 07-11 14:33 ?664次閱讀

    matlab預測模型有哪些

    環境,使其成為預測模型開發和實現的理想平臺。本文將詳細介紹MATLAB中常用的預測模型及其應用。 線性回歸模型 線性回歸是一種簡單的預測模型,用于分析兩個或多個變量之間的線性關系。在MATLAB中,可以使用 regress 、
    的頭像 發表于 07-11 14:27 ?812次閱讀

    matlab的神經網絡app怎么

    Matlab的神經網絡App是一個強大的工具,可以幫助用戶快速構建、訓練和測試神經網絡模型。 神經網絡基本概念 神經網絡是一種模擬人腦神經元網絡的計算模型,由大量的神經元(或稱為節點)通過權重連接
    的頭像 發表于 07-09 09:49 ?462次閱讀

    MATLAB如何使用訓練好的網絡

    實現和應用變得簡單易行。 MATLAB神經網絡概述 MATLAB提供了多種神經網絡架構,如前饋神經網絡、卷積神經網絡(CNN)、循環神經網絡(RNN)等。這些網絡可以通過MATLAB
    的頭像 發表于 07-03 10:06 ?1239次閱讀

    先楫6880如何實現bootload + APP應用跳轉

    ,通過boot來判斷是哪種啟動方式。 因此,內存管理是保證程序正確運行的前提。在實現bootload跳轉的前提無非兩個問題: (1).app程序跳轉的地址。 (2).app程序的中斷向量表。 2.
    發表于 04-26 16:03

    IAP升級,boot和app分別是標準庫和HAL庫寫的,跳轉不成功是怎么回事?

    在學IAP升級。 我寫的app程序是HAL庫寫的,設置了IROM的起始地址及大小,在程序開始后也設置了中斷向量表偏移地址。 我同事寫好的boot程序(標準庫寫的,可以跳轉到標準庫寫的app
    發表于 04-24 07:56

    STM32進行bootloader開發時,能不能將boot和app程序的hex合成為一個hex進行燒錄?

    大家好,請問STM32進行bootloader開發時,能不能將boot和app程序的hex合成為一個hex進行燒錄?我之前分別燒錄兩個hex,是可以實現功能的,不知道合成一個hex燒錄行不行。 我
    發表于 04-01 08:20

    如何在Matlab實現不同窗低通濾波器的設計?

    Matlab中使用漢明窗設計低通濾波器可以通過fir1函數實現。漢明窗通常用于設計濾波器,可以提供更突出的頻率特性。
    的頭像 發表于 02-27 14:11 ?7188次閱讀
    如何在<b class='flag-5'>Matlab</b>中<b class='flag-5'>實現</b>不同窗低通濾波器的設計?

    rtthread通用bootloader后,app的io口無法產生中斷怎么解決?

    使用的stm32f412,的rtthread自動生成的bootloader,跳轉到app后,app正常運行,但是開啟的io口中斷,無法正常產生中斷,去掉bootloader后,使用沒有偏移的
    發表于 02-26 07:01

    GPT寫個mexFunction

    最近有位用戶想在 MATLAB m 代碼實現一個將某個圖形窗口最大化顯示的功能,問我們有沒有 MATLAB 函數支持這個。
    的頭像 發表于 01-25 10:10 ?737次閱讀
    <b class='flag-5'>用</b>GPT寫個mexFunction
    主站蜘蛛池模板: 野花4在线观看| 婷婷五月久久丁香国产综合| 亚洲一区二区三区91| 亚洲国产欧美日本大妈| 无码人妻丰满熟妇啪啪网不卡| 欧亚一卡二卡日本一卡二卡| 精品熟女少妇AV久久免费A片| 久久久视频2019午夜福利| 京香在线观看| 久久精品国产亚洲AV未满十八| 大陆老太交xxxxxhd在线| 97色伦图片97色伦图影院久久| 天天综合亚洲综合网站| 日韩精品无码久久一区二区三| 久久精品男人影院| 孕妇泬出白浆18P| 99er久久国产精品在线| 伊人久久精品午夜| 亚洲中文字幕乱码熟女在线| 亚洲色图19p| 十九禁啊啪射视频在线观看| 少爷被多个暗卫肉高h| 色欲AV精品一区二区入口| 天天靠天天擦天天摸| 臀精插宫NP文| 日本 稀土矿| 亚洲精品免费在线| 最近2019中文字幕MV免费看 | 极品少妇高潮啪啪AV无码| 吉吉影音先锋av资源网| 久就热视频精品免费99| 青青草偷拍国产亚洲欧洲| 日韩精品AV一区二区三区| 日日射夜夜干夜夜插在线播放| 彭丹吃奶门| 在线免费观看a视频| 九九热精品视频在线观看| 色鲁97精品国产亚洲AV高| 99热在线免费观看| 国产亚洲国际精品福利| 久久精品综合电影|