[發(fā)明專利]基于逆波蘭算法的數(shù)字示波器數(shù)學(xué)運算處理方法有效
| 申請?zhí)枺?/td> | 202010610481.3 | 申請日: | 2020-06-30 |
| 公開(公告)號: | CN111767004B | 公開(公告)日: | 2022-02-11 |
| 發(fā)明(設(shè)計)人: | 黃武煌;張沁川;帥維維;趙勇;葉芃;田書林;王厚軍 | 申請(專利權(quán))人: | 電子科技大學(xué) |
| 主分類號: | G06F3/05 | 分類號: | G06F3/05;G06F17/15 |
| 代理公司: | 北京正華智誠專利代理事務(wù)所(普通合伙) 11870 | 代理人: | 李林合;何凡 |
| 地址: | 611731 四川省成*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 波蘭 算法 數(shù)字 示波器 數(shù)學(xué) 運算 處理 方法 | ||
1.一種基于逆波蘭算法的數(shù)字示波器數(shù)學(xué)運算處理方法,其特征在于,包括以下步驟:
S1、輸入字符參數(shù),生成運算表達(dá)式;
S2、對算術(shù)運算表達(dá)式進(jìn)行中綴表達(dá)式向逆波蘭式轉(zhuǎn)換解析,并檢測解析過程中表達(dá)式的合法性;所述檢測解析過程中表達(dá)式的合法性具體包括以下分步驟:
C1、創(chuàng)建一存放操作數(shù)及括號的數(shù)據(jù)棧;
C2、在中綴表達(dá)式轉(zhuǎn)換為逆波蘭式過程中,進(jìn)行函數(shù)校驗,判斷過程具體為:
C21、判斷校驗棧是否為空,若是則說明表達(dá)式不完整,結(jié)束流程;否則輸出布爾值doPop為真,進(jìn)行下一判斷;
C22、判斷校驗棧是否不為空且布爾值doPop為真,若是則從校驗棧中彈出一個元素,進(jìn)行步驟C26;否則進(jìn)行下一判斷;
C23、判斷校驗棧是否為空且布爾值doPop為真,若是則進(jìn)行下一判斷,否則說明缺少左括號,結(jié)束流程;
C24、判斷檢驗區(qū)操作數(shù)個數(shù)是否匹配函數(shù)要求個數(shù),若是則說明公式正確,結(jié)束流程;否則進(jìn)行下一判斷;
C25、判斷檢驗區(qū)操作數(shù)個數(shù)是否小于函數(shù)要求個數(shù),若是則說明參數(shù)過少結(jié)束流程;否則說明參數(shù)過少結(jié)束流程;
C26、判斷該元素是否為操作數(shù),若是則將該元素輸出至待檢驗區(qū);否則進(jìn)行下一判斷;
C27、判斷該元素是否為左括號,若是則輸出布爾值doPop為假,并返回步驟C22;否則說明出現(xiàn)非法字符,結(jié)束流程;
S3、逐元素對逆波蘭形式表達(dá)式進(jìn)行計算;
S4、將計算結(jié)果存儲至對應(yīng)的數(shù)學(xué)通道的數(shù)據(jù)緩沖區(qū)內(nèi);
S5、將運算結(jié)果顯示于示波器屏幕上。
2.根據(jù)權(quán)利要求1所述的基于逆波蘭算法的數(shù)字示波器數(shù)學(xué)運算處理方法,其特征在于,所述步驟S1還包括:
將生成的運算表達(dá)式轉(zhuǎn)換為半角輸入以及小寫格式。
3.根據(jù)權(quán)利要求2所述的基于逆波蘭算法的數(shù)字示波器數(shù)學(xué)運算處理方法,其特征在于,所述步驟S1之后還包括以下分步驟:
A1、根據(jù)測量項字符串以及操作符字符串將運算表達(dá)式進(jìn)行拆分處理;
A2、通過遍歷的方式,以“+-*/(),=!|~”為分割符標(biāo)志,將運算表達(dá)式元素進(jìn)行提取,并使用隊列方式進(jìn)行存儲。
4.根據(jù)權(quán)利要求3所述的基于逆波蘭算法的數(shù)字示波器數(shù)學(xué)運算處理方法,其特征在于,所述步驟A2中,定義Token數(shù)據(jù)結(jié)構(gòu)作為數(shù)據(jù)結(jié)構(gòu)體,所述Token數(shù)據(jù)結(jié)構(gòu)包括類型、單位、標(biāo)識符、元素位于表達(dá)式的位置,其中類型包括操作數(shù)、運算符、函數(shù)、分隔符,設(shè)置運算表達(dá)式字符串為ListToken。
5.根據(jù)權(quán)利要求4所述的基于逆波蘭算法的數(shù)字示波器數(shù)學(xué)運算處理方法,其特征在于,所述步驟S2中,對算術(shù)運算表達(dá)式進(jìn)行中綴表達(dá)式向逆波蘭式轉(zhuǎn)換解析具體包括以下分步驟:
B1、創(chuàng)建一存放操作符的數(shù)據(jù)棧,并按照優(yōu)先級存放操作符;
B2、依次遍歷中綴表達(dá)式數(shù)據(jù)結(jié)構(gòu),通過檢查每個Token元素的類型標(biāo)識來判斷當(dāng)前元素的類型,直至遍歷完整個中綴表達(dá)式中的所有元素:
若該元素是操作數(shù),則將該元素輸出到逆波蘭式隊列;否則進(jìn)行下一判斷;
若該元素是函數(shù),使用臨時變量保存該元素;否則進(jìn)行下一判斷;
若該元素是運算符,當(dāng)操作符棧為空或棧頂操作符具有更高的優(yōu)先級或棧頂為左括號時,將該元素壓入棧;否則從棧中彈出一個元素輸出至逆波蘭式,并重復(fù)操作符棧判定步驟,直至將該元素壓入棧;否則進(jìn)行下一判斷;
若該元素是左括號,且臨時變量不為空,則將該元素輸出到逆波蘭式的同時將該元素與臨時變量壓入棧中,然后將臨時變量置為空;否則直接將該元素壓入棧;否則進(jìn)行下一判斷;
若該元素是右括號,當(dāng)棧頂為函數(shù)時,將該元素輸出至逆波蘭式隊列,并從棧頂彈出一個元素至逆波蘭式隊列;當(dāng)棧頂為運算符時,從棧頂彈出一個元素至逆波蘭式隊列,然后重復(fù)判斷此時棧是否為空;若棧頂為左括號,從棧頂彈出一個元素;否則進(jìn)行下一判斷;
若該元素為逗號,則依次彈出操作符棧中的所有操作符,輸出至逆波蘭式隊列,直至遇見函數(shù)源;否則獲取下一個元素進(jìn)行判斷。
6.根據(jù)權(quán)利要求1所述的基于逆波蘭算法的數(shù)字示波器數(shù)學(xué)運算處理方法,其特征在于,所述步驟S3逐元素對逆波蘭形式表達(dá)式進(jìn)行計算具體包括以下分步驟:
D1、創(chuàng)建一存放中間結(jié)果的數(shù)據(jù)棧;
D2、依次遍歷逆波蘭式數(shù)據(jù)結(jié)構(gòu),通過檢查每個Token元素的類型標(biāo)識來判斷當(dāng)前元素的類型,直至遍歷完整個逆波蘭式中的所有元素:
若該元素為操作數(shù)或左右括號,則直接壓入棧中;否則進(jìn)行下一判斷;
若該元素為運算符,則首先獲取當(dāng)前運算符定義的操作數(shù)個數(shù),并從棧中彈出滿足個數(shù)的操作數(shù),經(jīng)過計算后將結(jié)果數(shù)據(jù)壓入棧中;否則進(jìn)行下一判斷;
若該元素為函數(shù),則將離棧頂最近的一對括號的范圍內(nèi)操作數(shù)從棧中彈出并作用于該函數(shù)進(jìn)行運算,經(jīng)過計算后將運算結(jié)果壓入棧中;否則從棧中彈出最后一個數(shù)值作為帶顯示波形的數(shù)據(jù)結(jié)果輸出。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于電子科技大學(xué),未經(jīng)電子科技大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010610481.3/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F3-00 用于將所要處理的數(shù)據(jù)轉(zhuǎn)變成為計算機能夠處理的形式的輸入裝置;用于將數(shù)據(jù)從處理機傳送到輸出設(shè)備的輸出裝置,例如,接口裝置
G06F3-01 .用于用戶和計算機之間交互的輸入裝置或輸入和輸出組合裝置
G06F3-05 .在規(guī)定的時間間隔上,利用模擬量取樣的數(shù)字輸入
G06F3-06 .來自記錄載體的數(shù)字輸入,或者到記錄載體上去的數(shù)字輸出
G06F3-09 .到打字機上去的數(shù)字輸出
G06F3-12 .到打印裝置上去的數(shù)字輸出





