上堂課講到了控制結(jié)構(gòu)!
程序控制結(jié)構(gòu)是指以某種順序執(zhí)行的一系列動(dòng)作,用于解決某個(gè)問題。理論和實(shí)踐證明,無(wú)論多復(fù)雜的算法均可通過順序、選擇、循環(huán)這三種基本控制結(jié)構(gòu)構(gòu)造出來(lái)。每種結(jié)構(gòu)僅有一個(gè)入口和出口。由這3種基本結(jié)構(gòu)組成的多層嵌套程序稱為結(jié)構(gòu)化程序。百度百科解釋的很棒!相信大家在C語(yǔ)言里面已經(jīng)了解了這些知識(shí),那就在MATLAB中再來(lái)一遍吧。再來(lái)學(xué)習(xí)另外一種開關(guān)結(jié)構(gòu)!
switch 語(yǔ)句用的場(chǎng)合不如 if 語(yǔ)句多!
注意:開關(guān)結(jié)構(gòu)運(yùn)行時(shí),MATLAB 將開關(guān)表達(dá)式的值依次和各個(gè) case 后面的表達(dá)式進(jìn)行比較,如果是“邏輯真”,將執(zhí)行相應(yīng)的語(yǔ)句,如果是“邏輯假”,則取下一個(gè) case 后面的表達(dá)式進(jìn)行比較。如果所有 case 后面的語(yǔ)句均與開關(guān)表達(dá)式的值不相等,則執(zhí)行 otherwise 后面的指令語(yǔ)句組。還有請(qǐng)大家注意這個(gè)語(yǔ)法和C的差異!
開關(guān)表達(dá)式的形式有兩種:一種是標(biāo)量;另外一種是字符串。對(duì)于字符串形式,MATLAB 在比較時(shí)將調(diào)用函數(shù) strcmp( ),得出字符串比較的邏輯輸出值,MATLAB 根據(jù)該邏輯值的真假來(lái)判斷是否執(zhí)行該 case 后面的語(yǔ)句。
什么是流程?
流程簡(jiǎn)單的解釋就是指事物進(jìn)行中的次序或順序的布置和安排。我們做的很多事情都有一個(gè)流程。比如你要到京東買東西就要先登錄賬號(hào),然后購(gòu)物,然后提交,再然后進(jìn)行付費(fèi)。再比如華為公司使用的BPM。這是一個(gè)流程管理軟件,先處理什么事情,再處理什么事情,涉及順序,管理思想等。只有到了一定規(guī)模的公司,你才能接觸到這個(gè)概念。我們先從軟件編程的角度出發(fā)來(lái)理解流程控制內(nèi)容吧。那什么是流程圖呢?學(xué)過C語(yǔ)言的同學(xué)肯定知道。復(fù)雜的編程一定要先畫流程圖!
做個(gè)例題吧。
例四:switch-case開關(guān)結(jié)構(gòu)實(shí)例。
通過鍵盤輸入百分制成績(jī),輸出成績(jī)的等級(jí),其中90~100分等級(jí)為A,80~89分等級(jí)為B,70~79分等級(jí)為C,60~69分等級(jí)為D,60分以下不及格。
正確嗎?
如果不正確,應(yīng)該如何改呢?
先思考一下!
注意!
試探結(jié)構(gòu)首先試探性的執(zhí)行指令語(yǔ)句組 1,如果在此語(yǔ)句組執(zhí)行過程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息給保留的 lasterr 變量,并放棄這組語(yǔ)句,轉(zhuǎn)而執(zhí)行語(yǔ)句組 2 中的語(yǔ)句。
若語(yǔ)句 2 執(zhí)行過程中又出現(xiàn)錯(cuò)誤,則 MATLAB 終止該結(jié)構(gòu)。
什么是魔方矩陣?
考試時(shí)候也許會(huì)遇到哦!
如何生成呢?magic函數(shù)可以來(lái)幫忙!魔方矩陣是指具有相同的行數(shù)和列數(shù),并且在每行每列、對(duì)角線上的和都相等的矩陣。魔方矩陣中的每個(gè)元素不能相同。你能構(gòu)造出任何大?。ǔ?x2)的魔方矩陣。
這個(gè)結(jié)構(gòu)用的少!
而下面的結(jié)構(gòu)幾乎無(wú)處不在!
注意!
”表達(dá)式“可以是 MATLAB 指令產(chǎn)生的數(shù)組,也可以是任意給定的一個(gè)數(shù)組。循環(huán)變量從”表達(dá)式“中的第一個(gè)數(shù)值(或第一列數(shù)組)一直循環(huán)到”表達(dá)式“的最后一個(gè)數(shù)值(或最后一列數(shù)組)。
注意!
執(zhí)行時(shí),只要邏輯表達(dá)式為”邏輯真“(非 0),就執(zhí)行指令語(yǔ)句組,執(zhí)行后再返回到 while 引導(dǎo)的邏輯表達(dá)式處,繼續(xù)判斷;如果邏輯表達(dá)式為”邏輯假“,則跳出循環(huán)。
通常,邏輯表達(dá)式的值為一個(gè)標(biāo)量,但數(shù)組也同樣有效。
示例講解!
例七:運(yùn)用 while……end循環(huán)結(jié)構(gòu)實(shí)現(xiàn):從鍵盤輸入若干個(gè)數(shù),當(dāng)輸入數(shù)字為零時(shí),結(jié)束輸入。求這些數(shù)字的平均值以及它們的和。
如果你熟悉C語(yǔ)言的語(yǔ)法知識(shí),那么掌握這些就易如反掌!如果忘記了,可以通過互聯(lián)網(wǎng)來(lái)回顧!如果沒有學(xué)過C語(yǔ)言,那么就需要在MATLAB相關(guān)書籍中學(xué)習(xí)相關(guān)內(nèi)容。繼續(xù)通過示例來(lái)了解這兩個(gè)語(yǔ)句的用法吧。
知識(shí)點(diǎn)!
語(yǔ)言比較!
學(xué)到這里請(qǐng)同學(xué)們?cè)俅位仡櫼幌?,C語(yǔ)言中如何使用if選擇語(yǔ)句和for循環(huán)語(yǔ)句的?。坑惺裁床顒e呢?大家覺得哪個(gè)語(yǔ)言用起來(lái)方便呢?這兩種語(yǔ)言各有各的應(yīng)用場(chǎng)合。對(duì)于電子、通信類專業(yè),以后在工作中都要用到。建議比較學(xué)習(xí),有益于大家編程能力的提高!課后建議大家多編程練習(xí),這樣考試的時(shí)候就穩(wěn)如泰山了。
視頻課程來(lái)了!回顧加總結(jié)!
我會(huì)在本公眾號(hào)里面推出原創(chuàng)系列文章《MTALAB和信號(hào)與系統(tǒng)》、《MTALAB與濾波器》、《捕獲跟蹤算法的matlab》、仿真《MTALAB與鎖相環(huán)》、《MTALAB與位同步》、《MTALAB與誤碼率》、《MTALAB與衛(wèi)星通信》、《MTALAB與衛(wèi)星導(dǎo)航信號(hào)處理》。先推出《MTALAB與誤碼率》,畢竟我是通信工程專業(yè)的老師,優(yōu)先照顧一下本專業(yè)的學(xué)子們。然后再推出《MTALAB與濾波器》,幫助電子類專業(yè)的學(xué)生。不過學(xué)這些課程之前,同學(xué)們必須先把MATLAB學(xué)好。萬(wàn)丈高樓平地起。否則等到自己到了要用的時(shí)候再去學(xué),就有點(diǎn)晚了。2019年,在仿真秀APP開講了!
傳播知識(shí)會(huì)不遺余力!2023年,在仿真秀網(wǎng)站上已有超過一千小時(shí)的課程!2023年的MATLAB講課視頻會(huì)在2024年上傳!教的時(shí)間越長(zhǎng),講課的質(zhì)量會(huì)逐年提升!暑假期間,很多同學(xué)在準(zhǔn)備考研,特地錄制了一個(gè)視頻,讓大家在復(fù)習(xí)的時(shí)候能夠?qū)⒑芏嘀R(shí)點(diǎn)串聯(lián)起來(lái)。
最后一起來(lái)回顧一下課堂上的講解內(nèi)容吧!
未完,待續(xù)!
修訂記錄
20191128 完成初稿;
20220120 修訂內(nèi)容;
20230801 修訂內(nèi)容v2;
20231126修訂內(nèi)容v3;
原文標(biāo)題:MATLAB課程之第三章v3 M文件知識(shí)(3)
文章出處:【微信公眾號(hào):通信工程師專輯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
通信網(wǎng)絡(luò)
+關(guān)注
關(guān)注
21文章
2012瀏覽量
51787
原文標(biāo)題:MATLAB課程之第三章v3 M文件知識(shí)(3)
文章出處:【微信號(hào):gh_30373fc74387,微信公眾號(hào):通信工程師專輯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論