fft的c语言和matlab对比_Matlab系列之程序控制
經過前幾篇的學習,我想對于Matlab的兩種M文件都已經清楚各自的功能并對函數的相關知識有了一定的了解,今天這篇將對Matlab的程序控制結構進行學習,首先要知道在Matlab中,具有四類程序控制結構方式,依次是:條件控制、循環控制、誤差控制和程序終止,接下來一一對其進行介紹。
~Show Time~
1
條件控制語句
在編寫程序時,會根據需要,使用不同的條件控制語句,可以是判斷語句也可以是分支語句。
判斷語句
看到名字,我想你也已經猜到了一些東西,寫過C或者其他相關程序的,都知道一種條件判斷語句,也就是if語句,在Matlab中通常使用if-else-end分支結構,包含單分支、雙分支和多分支3種形式,結構比較簡單。
單分支如下:
if 邏輯表達式 執行代碼塊;end雙分支:
if 表達式 執行代碼塊1;else 執行代碼塊2;end多分支:
if 表達式1 執行代碼塊1;else if 表達式2 執行代碼塊2;else 執行代碼塊3;end以上3種分支結構實現都是一樣,當邏輯表達式或者表達式為真時(邏輯表達式為非空數組、為非零變量、矩陣變量所有元素都非零都為真)則進入相應表達式下的執行代碼塊,然后結束;若為假,則進入下一級表達式判斷,直至判斷結束。
分支語句
可能看到名字,你會有點陌生,但是看到switch后,你是否就恍然大悟了呢~
其結構:
switch 表達式(標量或字符串) case value1 執行代碼塊1; case value2 執行代碼塊1; ............... otherwise 執行代碼塊N;end結構表達很簡單,當表達式是一個標量時,就與相應的value進行比較,然后進入對應的執行代碼塊,例如和value1相等,就執行代碼塊1;和value2相等,就執行代碼塊2;如果所有的value都不與之相等,則進入otherwise執行相應的的代碼塊;如果表達式是一個字符串,也是一樣的比較,只是MATLAB在比較時會自動調用strcmp函數,也就是字符串比較的函數,從而實現字符串的比較。
接下來對switch語句做個簡單使用:
程序:
switch value case 1 disp('1'); case {2,3,4} disep('2 or 3 or 4'); case 5 disp('5') otherwise disp('Other number');end手動輸入一個value的值,然后運行腳本進行判斷結果的輸出:
2
循環控制語句
相信大家對于循環語句就更熟悉了,for和while,我想寫過程序的都用過;在MATLAB中的表達可能會和一些語言的表達形式不太一樣,但是使用的效果一致,for的結構為:
for 循環變量=開始值:增量:結束值 循環體end增量默認為1,可以設置為任何值,其他的使用與C或者相關語言的一致。
演示下嵌套的使用
程序:
for m=1:3 for n=1:5 A(m,n)=1/(m+n-1) endend分析:
第1、2行代表的就是建立一個3行5列的矩陣,第3行就是具體構建m行n列的矩陣并進行對應元素賦值操作。
結果:
while語句是通過判斷條件表達式的真假性,從而實現循環;
其結構為:
while 條件表達式 循環體end直接演示一個程序:
n=1;while prod(1:n)<1e100< span=""> n=n+1;end結果:
這個程序的作用就是計算n!<1e< span="">100的最大n值,其中的prod就是實現數組元素的乘積,當小于1e100的時候,n就進行累加,直至得到最大的n值。
3
誤差控制語句
我看到這個名字的第一眼,其實也是很懵逼的,為什么叫誤差控制呢?然后學了之后就懂意思了,大概是這樣的,類似條件判斷語句,如果if的表達式不對,就進行下一個的判斷或者直接運行else中的代碼塊,只是誤差控制語句變成來try-catch-end的樣子,具體結構:
try 程序代碼塊1,%總被執行,若正確,即跳出此結構catch 程序代碼塊2,%僅當程序代碼塊1出現錯誤,該代碼塊才被執行end如果程序代碼塊2也錯了,則會終止運行的程序,若還有其他try-catch-end的語句,就會繼續運行下一個try-catch-end,并且可以使用laster命令查看發生錯誤的原因(查看上一處錯誤),演示一段程序:
n=4;A=pascal(3);tryA_n=A(n,:),catchA_end=A(end,:),end結果:
分析:使用pascal(3)構建了一個3x3的三角形矩陣,但是n=4,因此A_n=A(n,:)這一部分的代碼相當于是錯的,所以進入下一部分,即A_end=A(end,:),然后將最后一行賦值并顯示在窗口。
注意:try-catch-end語句中代碼塊是使用逗號隔開的,而不是分號!!!
4
程序終止語句
在程序設計中通常需要提前終止循環、結束程序的運行、顯示錯誤信息等情況,在MATLAB中,就具有continue、break、return、error等語句,接下來對其進行簡單的介紹。
1、continue語句
該語句常用于循環控制中,使得當次的循環結束,繼續下一次循環,并不是結束整個循環,直接做個演示:
fid=fopen('magic.m','r');count=0;while ~feof(fid)%判斷是否為文本的最后一行 line=fgetl(fid);%讀取當前文本中當前行的下一行 if isempty(line)|strncmp(line,'%',1)%判斷是否是空行或者注釋(判斷%號即可) continue%若是空行或者注釋就退出當次循環 end count=count+1;enddisp(sprintf('%d lines',count));結果,顯示除去空行以及注釋行后的代碼行數,其中magic是系統內置的一個文件,可以直接在命令窗口行輸入“open magic.m”打卡該文件進行結果的比對:
2、break語句
該語句雖然也是用于循環控制的,但是它的功能是直接中斷當前的循環,不再執行該循環的任何操作,程序演示:
fid=fopen('fft.m','r');s='';while ~feof(fid) line=fgetl(fid); if isempty(line),break,end s=strvcat(s,line);enddisp(s)結果:
分析:打開fft.m文件進行對比,會發現,在有空行時,就結束了文件內容的打印,關于文件的操作,會在之后的記錄中出現,如果有不懂的地方,可以過段時間再來理解。
3、return語句
該語句就是將結束正在運行的函數,并且返回調用函數,一般是在函數的末尾正常結束函數的運行,也可以是在滿足某種條件的時候強制結束函數運行并返回調用函數,這個就不做程序的演示了。
4、error語句
該語句理解更簡單,就是直接終止當前函數的運行,并且顯示出錯信息,運行程序出錯的時候那一串紅色的字很醒目吧,那就是使用error產生的,當然warning就是使用warning語句了,使用語法:error('error message!!!')
結果:
還有一些語句,因為時間關系就不做介紹了,不過都比較簡單,有的在之前也有過介紹,剩下的可以自行使用幫助系統進行學習使用,有input、keyboard、pause...
END
今天的內容中,如果遇到不懂的命令,我也沒有對其進行講解的,之后我講到其他內容時可能會繼續講到,比如文件操作的相關,如果可以的話,命令行help挺好的
閱讀本文共使用????秒
電子知識
一些電路設計與DIY作品
電子設計技巧與經驗
FPGA
System Generator系列教程
算法介紹
通信協議分析
資料分享
Matlab系列記錄
建設中~
點個贊
再走吧
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的fft的c语言和matlab对比_Matlab系列之程序控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python解压文件_使用Python实
- 下一篇: http路径转file会变成反斜杠_PH