国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Matlab程序單步調(diào)試方法及樣例分析

2015-08-14 21:53:12王若楠田野馬玉峰劉立士
現(xiàn)代電子技術(shù) 2015年15期
關(guān)鍵詞:計(jì)算結(jié)果

王若楠+田野+馬玉峰+劉立士

摘 要: 針對(duì)單步調(diào)試法在程序調(diào)試中的重要作用,引用了一個(gè)具體的樣例,進(jìn)行Matlab程序單步調(diào)試法的分析并逐步檢驗(yàn),根據(jù)運(yùn)行結(jié)果與實(shí)際計(jì)算結(jié)果的比較,驗(yàn)證了該方法在程序調(diào)試中的重要地位,并且該實(shí)驗(yàn)結(jié)果還可以應(yīng)用于復(fù)雜的算法驗(yàn)證中,具有很大的實(shí)用意義。

關(guān)鍵詞: 程序調(diào)試;系統(tǒng)質(zhì)量;運(yùn)行結(jié)果;計(jì)算結(jié)果;單步調(diào)試法

中圖分類號(hào): TN92?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)15?0139?03

Single?step debugging method of Matlab program and instance analysis

WANG Ruonan, TIAN Ye, MA Yufeng, LIU Lishi

(School of Information Science and Engineering, Shenyang Ligong University, Shenyang 110159, China)

Abstract: A specific instance is cited and analyzed by using single?step debugging of Matlab program. The debugging method is verified step by step. In comparison with operation results and actual computation results, the important status of the proposed method in program debugging is verified. The experimental results can be applied in complicated algorithm verification. The method has great practical significance.

Keywords: program debugging; system quality; operation result; computation result; single?step debugging method

0 引 言

Matlab(Matrix Laboratory)作為一種高效的科學(xué)及工程計(jì)算語言,廣泛地應(yīng)用于數(shù)學(xué)分析、自動(dòng)控制、系統(tǒng)仿真、人工智能等領(lǐng)域[1?5]。

在Matlab應(yīng)用中,程序調(diào)試是保證系統(tǒng)質(zhì)量的關(guān)鍵步驟[6?7],其主要目的是發(fā)現(xiàn)程序中的錯(cuò)誤并及時(shí)糾正。目前主要有直接調(diào)試和單步調(diào)試兩種方法。直接調(diào)試法主要應(yīng)用于簡(jiǎn)單的Matlab程序,如程序設(shè)計(jì)中的流程控制問題;當(dāng)M文件很大或者M(jìn)文件中含有復(fù)雜的嵌套時(shí),則需要單步調(diào)試法對(duì)程序進(jìn)行調(diào)試,文獻(xiàn)[8]采用單步調(diào)試法驗(yàn)證信號(hào)處理指標(biāo)和實(shí)時(shí)性是否滿足要求,文獻(xiàn)[9]針對(duì)現(xiàn)場(chǎng)故障,采用繼電保護(hù)應(yīng)用軟件仿真驗(yàn)證系統(tǒng),進(jìn)行單步跟蹤調(diào)試,準(zhǔn)確判斷裝置保護(hù)程序邏輯正確性。

上述研究只是應(yīng)用了單步調(diào)試方法,并沒有提到具體的調(diào)試步驟。因此,本文針對(duì)具體的樣例,進(jìn)行了Matlab環(huán)境下程序的單步調(diào)試,該樣例可為復(fù)雜的Matlab程序設(shè)計(jì)提供依據(jù)和參考。

1 單步調(diào)試法

程序調(diào)試中常見的錯(cuò)誤有以下三種:拼寫錯(cuò)誤、語法錯(cuò)誤與邏輯錯(cuò)誤[1],Matlab會(huì)在程序運(yùn)行出錯(cuò)的時(shí)候提示是哪一行出現(xiàn)問題,但卻不能確定導(dǎo)致出錯(cuò)的是哪一行,或者在運(yùn)行過程中沒有報(bào)錯(cuò),但是得出的結(jié)果卻是不符合邏輯的。在這些情況下就需要單步調(diào)試解決問題。單步調(diào)式法具體可以由以下幾個(gè)步驟完成:

(1) 設(shè)置斷點(diǎn);

(2) 程序運(yùn)行到斷點(diǎn)時(shí)步進(jìn);

(3) 在斷點(diǎn)處查看所調(diào)試的變量是否與邏輯值相符;

(4) Step in,進(jìn)入子程序,查看運(yùn)行情況;

(5) 在子程序中步進(jìn)或者直接跳出進(jìn)入主程序。

2 樣例分析

以公式[y=110n=010n?P(A(z,x)=n)+n=11∞P(A(z,x)=n)]為例,其中復(fù)合函數(shù)[A(z,x)]服從泊松分布,即[P(A(z,x)=n)]的概率[10]為:

[P(A(z,x)=n)=(z?x)n?e-z?xn!] (1)

將式(1)代入樣例公式得:

[y=110y1+y2] (2)

其中:

[y1=n=010n?(z?x)n?e-z?xn!] (3)

[y2=n=11∞(z?x)n?e-z?xn!] (4)

仿真參數(shù)[z]設(shè)置為1,以[x=1]為例,使用單步調(diào)試法測(cè)試程序的正確性。圖1為該公式的主程序示意圖。

圖1 主程序

程序中的[s1(1,x)]和[s2(1,x)]分別對(duì)應(yīng)公式中的[y1]和[y2]。

首先設(shè)置斷點(diǎn),如圖2所示。

圖2 主程序斷點(diǎn)設(shè)置

單擊運(yùn)行程序,當(dāng)程序運(yùn)行到斷點(diǎn)處時(shí)即暫停,然后單擊單步運(yùn)行,當(dāng)程序運(yùn)行到第二個(gè)斷點(diǎn)時(shí),即進(jìn)入泊松子程序,如圖3所示。

圖3 泊松子程序

運(yùn)行完這一步后,跳出子程序,回到主程序,此時(shí)程序的各參數(shù)運(yùn)行結(jié)果如圖4所示。

此時(shí),將[z=1,][x=1]與[n=0]代入式(3),得出此時(shí)[y1]的累加結(jié)果為[y1=0],此結(jié)果與上述程序運(yùn)行結(jié)果相符,繼續(xù)測(cè)試當(dāng)[n=1]時(shí)的結(jié)果。點(diǎn)擊繼續(xù)程序的運(yùn)行,當(dāng)?shù)诙芜\(yùn)行完時(shí),各參數(shù)運(yùn)行結(jié)果如圖5所示。

圖4 [n=0]時(shí)的運(yùn)行結(jié)果

圖5 [n=1]時(shí)的運(yùn)行結(jié)果

此時(shí),將[z=1,][x=1]與[n=1]代入式(3),得出此時(shí)[y1]的累加結(jié)果如圖6所示。

圖6 [n=1]時(shí)的計(jì)算結(jié)果

此結(jié)果與上述程序運(yùn)行結(jié)果相符,繼續(xù)測(cè)試當(dāng)[n=2]時(shí)的運(yùn)行結(jié)果。點(diǎn)擊繼續(xù)程序的運(yùn)行,當(dāng)?shù)谌芜\(yùn)行完時(shí),各參數(shù)運(yùn)行結(jié)果如圖7所示。

圖7 [n=2]時(shí)的運(yùn)行結(jié)果

此時(shí),將[z=1,][x=1]與[n=2]代入式(3),得出此時(shí)[y1]的累加結(jié)果如圖8所示。

圖8 [n=2]時(shí)的計(jì)算結(jié)果

此結(jié)果與上述程序運(yùn)行結(jié)果相符,可以表明該主程序的第一部分是正確的。

繼續(xù)設(shè)置斷點(diǎn),如圖9所示。

圖9 主程序第二次設(shè)置斷點(diǎn)

單步運(yùn)行程序,當(dāng)運(yùn)行完一次后,各參數(shù)運(yùn)行結(jié)果如圖10所示。

圖10 [n=11]時(shí)的運(yùn)行結(jié)果

將[z=1,][x=1]與[n=11]代入式(4),得出此時(shí)[y2]的累加結(jié)果如圖11所示。

圖11 [n=11]時(shí)的計(jì)算結(jié)果

此結(jié)果與上述程序運(yùn)行結(jié)果相符,繼續(xù)測(cè)試當(dāng)[n=12]時(shí)的運(yùn)行結(jié)果。點(diǎn)擊繼續(xù)程序的運(yùn)行,當(dāng)?shù)诙芜\(yùn)行完時(shí),各參數(shù)運(yùn)行結(jié)果如圖12所示。

圖12 [n=12]時(shí)的運(yùn)行結(jié)果

將[z=1,][x=1]與[n=12]代入式(4),此時(shí)[y2]的累加結(jié)果如圖13所示。

圖13 [n=12]時(shí)的計(jì)算結(jié)果

此結(jié)果與上述程序運(yùn)行結(jié)果相符,可以表明該主程序的第二部分是正確的。

綜合上述的分析,該程序的第一部分及第二部分對(duì)于每次累加后[y1]和[y2]的結(jié)果都是正確的,所以,其編寫是正確的。因此,該樣例成功運(yùn)用單步調(diào)試法完成了本程序的測(cè)試,為后續(xù)大數(shù)量數(shù)據(jù)的運(yùn)行提供了基礎(chǔ)。

3 結(jié) 論

通過以上實(shí)例的分析,驗(yàn)證了單步調(diào)試法在程序測(cè)試中的重要作用。通過此方法,程序員可以通過Matlab搭建系統(tǒng)模型,利用Matlab軟件本身的計(jì)算優(yōu)勢(shì),在程序編譯過程中快速找到錯(cuò)誤所在,提高編寫程序的效率,還可以應(yīng)用于復(fù)雜的算法測(cè)控中,具有很強(qiáng)的實(shí)用價(jià)值。

注:本文通訊作者為田野。

參考文獻(xiàn)

[1] 許波,劉征.Matlab工程數(shù)學(xué)應(yīng)用[M].北京:清華大學(xué)出版社,2000.

[2] 王向東,戎海武,文翰.數(shù)學(xué)實(shí)驗(yàn)[M].北京:高等教育出版社,2004.

[3] 薛定宇,陳陽泉.高等應(yīng)用數(shù)學(xué)問題的Matlab求解[M].北京: 清華大學(xué)出版社,2004.

[4] 黃忠霖.控制系統(tǒng)Matlab計(jì)算機(jī)仿真[M].北京:國(guó)防工業(yè)出版社,2004.

[5] 姜啟源,邢文訓(xùn),謝金星,等.大學(xué)數(shù)學(xué)實(shí)驗(yàn)[M].北京:清華大學(xué)出版社,2005.

[6] 李建新,劉乃安,劉繼.現(xiàn)代通信系統(tǒng)分析與仿真[M].西安:西安電子科技大學(xué)出版社,2001.

[7] 劉志儉.Matlab應(yīng)用接口用戶指南[M].北京:科學(xué)出版社,2000.

[8] 劉春.偽碼調(diào)相中斷連續(xù)波雷達(dá)信號(hào)處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2010.

[9] 朱寧,吳崇昊,李志堅(jiān),等.一種繼電保護(hù)應(yīng)用軟件仿真驗(yàn)證系統(tǒng)的設(shè)計(jì)[J].電力自動(dòng)化設(shè)備,2012,32(6):140?144.

[10] 毛用才,胡奇英.隨機(jī)過程[M].西安:西安電子科技大學(xué)出版社,2006.

猜你喜歡
計(jì)算結(jié)果
4種估算腎小球?yàn)V過率計(jì)算公式對(duì)患者腎功能的評(píng)估結(jié)果比較
不等高軟橫跨橫向承力索計(jì)算及計(jì)算結(jié)果判斷研究
甘肅科技(2020年20期)2020-04-13 00:30:40
勘誤說明
存放水泥
趣味選路
扇面等式
基于MIKE21二維數(shù)值模擬的不同橋墩概化方式下河道壅水計(jì)算結(jié)果對(duì)比分析
腦筋急轉(zhuǎn)彎
超壓測(cè)試方法對(duì)炸藥TNT當(dāng)量計(jì)算結(jié)果的影響
噪聲對(duì)介質(zhì)損耗角正切計(jì)算結(jié)果的影響
秦皇岛市| 新泰市| 乌审旗| 湛江市| 古蔺县| 凤城市| 霞浦县| 阳谷县| 嘉荫县| 巴林左旗| 越西县| 稷山县| 田阳县| 吕梁市| 武乡县| 泰州市| 双辽市| 浮梁县| 义乌市| 长岭县| 神池县| 延川县| 通海县| 剑川县| 沂南县| 普兰店市| 丽水市| 习水县| 莒南县| 张家口市| 远安县| 北安市| 九江县| 札达县| 莒南县| 内江市| 威宁| 水城县| 轮台县| 辛集市| 吉安市|