信息論與編碼課程設(shè)計(jì)及壓片成形機(jī)課程設(shè)計(jì)_第1頁
信息論與編碼課程設(shè)計(jì)及壓片成形機(jī)課程設(shè)計(jì)_第2頁
信息論與編碼課程設(shè)計(jì)及壓片成形機(jī)課程設(shè)計(jì)_第3頁
信息論與編碼課程設(shè)計(jì)及壓片成形機(jī)課程設(shè)計(jì)_第4頁
信息論與編碼課程設(shè)計(jì)及壓片成形機(jī)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

-32-信息論與編碼課程設(shè)計(jì)報(bào)告書學(xué)院:電氣工程與自動(dòng)化專業(yè)班級(jí):指導(dǎo)老師:團(tuán)隊(duì)成員:本案作者:學(xué)號(hào):完成日期:摘要信息是從人類出現(xiàn)以來就存在于這個(gè)世界上,人類社會(huì)的生存和發(fā)展都離不開信息的獲取、傳遞、處理、再生、控制和處理。而信息論正是一門把信息作為研究對(duì)象,以揭示信息的本質(zhì)特性和規(guī)律為基礎(chǔ),應(yīng)用概率論、隨即過程和數(shù)理統(tǒng)計(jì)等方法來研究信息的存儲(chǔ)、傳輸、處理、控制、和利用等一般規(guī)律的學(xué)科。主要研究如何提高信息系統(tǒng)的可靠性、有效性、保密性和認(rèn)證性,以使信息系統(tǒng)最優(yōu)化。在信息論的指導(dǎo)下,信息技術(shù)得到飛速發(fā)展,這使得信息論滲透到自然科學(xué)和社會(huì)科學(xué)的所有領(lǐng)域,并且應(yīng)用與眾多領(lǐng)域:編碼學(xué)、密碼學(xué)與密碼分析、數(shù)據(jù)壓縮、數(shù)據(jù)傳輸、檢測(cè)理論、估計(jì)理論等。信息論的主要基本理論包括:信息的定義和度量;各類離散信源和連續(xù)信源的信源熵;有記憶,無記憶離散和連續(xù)信道的信道容量,平均互信息;無失真信源編碼相關(guān)理論。求離散性信源熵也是信息論課程實(shí)踐學(xué)習(xí)中必須要經(jīng)歷,在了解常規(guī)的求解方式的同時(shí),利用計(jì)算機(jī)語言進(jìn)行實(shí)踐編程。用預(yù)先規(guī)定的方法將文字、數(shù)字或其他對(duì)象編成數(shù)碼,或?qū)⑿畔?、?shù)據(jù)轉(zhuǎn)換成規(guī)定的電脈沖信號(hào)。編碼在電子計(jì)算機(jī)、電視、遙控和通訊等方面廣泛使用。其中哈夫曼編碼有廣泛的應(yīng)用,通過本次實(shí)驗(yàn),了解編碼的具體過程,通過編程實(shí)現(xiàn)編碼。本次實(shí)驗(yàn)所使用的機(jī)器語言均為C語言。關(guān)鍵字:信息論離散和連續(xù)信源熵哈夫曼編碼C語言編程設(shè)計(jì)目錄摘要 -1-第一章課程設(shè)計(jì)概述及意義 -3-第二章設(shè)計(jì)任務(wù)與要求 -3-1、設(shè)計(jì)目的 -3-1.1 -3-1.2 -3-1.3 -3-1.4 -4-1.5 -4-2.設(shè)計(jì)內(nèi)容 -4-3.設(shè)計(jì)要求 -4-4.設(shè)計(jì)條件 -4-5.設(shè)計(jì)思路 -4-6.離散平穩(wěn)信源熵求解說明 -5-7.哈夫曼編碼編程方式說明 -5-第三章設(shè)計(jì)流程圖 -6-1.信源熵編程計(jì)算設(shè)計(jì)流程圖 -7-2.哈夫曼編碼程序設(shè)計(jì)流程圖 -8-3.軟件介紹 -8-3.1VisualC++6.0簡(jiǎn)介 -8-3.2主要部分 -9-第三章程序運(yùn)行及結(jié)果 -10-1.計(jì)算信源熵結(jié)構(gòu)截圖 -10-2.哈夫曼樹編程截圖結(jié)果 -11-3.設(shè)計(jì)內(nèi)容舉例結(jié)果分析 -11-第五章課程設(shè)計(jì)心得體會(huì) -13-附錄 -14-1.參考文獻(xiàn) -14-2.哈幅曼樹調(diào)試程序 -14-3.信源熵計(jì)算調(diào)試程序 -19-第一章課程設(shè)計(jì)概述及意義本課程設(shè)計(jì)是在學(xué)習(xí)了《信息論與編碼》和相關(guān)開發(fā)的軟件課程后,讓我們通過實(shí)際的操作來熟悉信源編碼微機(jī)實(shí)現(xiàn),培養(yǎng)我們能夠獨(dú)立的完成對(duì)相關(guān)課題或者項(xiàng)目的分析能力、設(shè)計(jì)能力和調(diào)試能力。本課程設(shè)計(jì)是銜接在C課程、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)之后的,運(yùn)用程序思想來完成的,聯(lián)系信息論與編碼所學(xué)內(nèi)容,要求有獨(dú)立的操作界面。在這次的課程設(shè)計(jì)中,著重培養(yǎng)的是我們的自學(xué)能力,以及獨(dú)立分析互聯(lián)網(wǎng)上和圖書館里的各種資料,來豐富自己的知識(shí)并且提高對(duì)數(shù)學(xué)公式的計(jì)算機(jī)實(shí)現(xiàn)、VC++等軟件的實(shí)際操作能力。通過這次的課程設(shè)計(jì),能夠使我們對(duì)已經(jīng)學(xué)習(xí)過的信息論與編碼課程的進(jìn)一步的掌握,能夠?qū)χR(shí)進(jìn)行最大程度的消化融匯。因此這次的課程設(shè)計(jì)對(duì)我們有著非常重要的意義。

本課程設(shè)計(jì)中用VC編寫出基于visualstudio2010界面的簡(jiǎn)單軟件以實(shí)現(xiàn)壓縮信源熵求解及哈夫曼編碼的目的。經(jīng)過比較系統(tǒng)合理的編程操作,實(shí)現(xiàn)可視化的窗口以方便用戶使用。通過簡(jiǎn)單校驗(yàn)確保信源正確性,保證軟件的可靠性。最終將結(jié)果保存為文檔方便記錄編碼結(jié)果。

通過讓完成具體編碼算法的程序設(shè)計(jì)和調(diào)試工作,達(dá)到提高編程能力和深刻理解編碼理論及信源熵求解的目的。培養(yǎng)我們使用計(jì)算機(jī)和查閱參考資料的能力,提高我們的基本設(shè)計(jì)能力。培養(yǎng)了理論聯(lián)系實(shí)際和獨(dú)立思考的能力。并激發(fā)我們的實(shí)際開發(fā)創(chuàng)造的意識(shí)和能力。培養(yǎng)和提高我們的自學(xué)能力以及綜合運(yùn)用所學(xué)理論知識(shí)去分析解決實(shí)際問題的能力。第二章設(shè)計(jì)任務(wù)與要求1、設(shè)計(jì)目的1.1深刻理解信源熵的計(jì)算方法;1.2深刻理解信源編碼的基本思想與目的;1.3理解哈夫曼編碼方法的基本過程與特點(diǎn);1.4提高綜合運(yùn)用所學(xué)理論知識(shí)獨(dú)立分析和解決問題的能力;1.5提高使用C語言或其他語言進(jìn)行編程的能力,以及visualstudio軟件的應(yīng)用能力。2.設(shè)計(jì)內(nèi)容首先對(duì)拖入文件中的字符總個(gè)數(shù)進(jìn)行統(tǒng)計(jì),然后從文本頭開始查找同一字符個(gè)數(shù),并計(jì)算其概率最后由得出的字符概率求得信源熵假設(shè)已知一個(gè)信源的各符號(hào)概率,編寫適當(dāng)函數(shù),對(duì)其進(jìn)行哈夫曼編碼,得出M進(jìn)制碼字,平均碼長和編碼效率,總結(jié)此編碼方法的特點(diǎn)和應(yīng)用。3.設(shè)計(jì)要求1、編寫的函數(shù)要有通用性;2學(xué)生可獨(dú)立完成,或組隊(duì)共同完成。每隊(duì)人數(shù)不多于4人。3、提交一份獨(dú)立完成的課程設(shè)計(jì)報(bào)告(紙質(zhì)和電子版),做5分鐘PPT匯報(bào),并演示程序。每隊(duì)選擇1人匯報(bào)和演示程序,其他人答辯。4、課程設(shè)計(jì)報(bào)告包括設(shè)計(jì)任務(wù)與要求、設(shè)計(jì)思路、設(shè)計(jì)流程圖、程序運(yùn)行及結(jié)果、心得體會(huì)、參考文獻(xiàn)、附錄(源程序)等內(nèi)容。4.設(shè)計(jì)條件1、計(jì)算機(jī)、C語言或其他語言環(huán)境2、設(shè)計(jì)軟件visualstudio20105.設(shè)計(jì)思路信源熵的定義:信源各個(gè)離散消息的自信息量的數(shù)學(xué)期望首先對(duì)拖入文件中的字符總個(gè)數(shù)進(jìn)行統(tǒng)計(jì),然后從文本頭開始查找同一字符個(gè)數(shù),并計(jì)算其概率,最后由得出的字符概率求得信源熵。假設(shè)每種字符在電文中出現(xiàn)的次數(shù)為Wi,編碼長度為Li,電文中有n種字符,則電文編碼總長度為(W1*L1)+(W2*L2)+…+(Wi*Li)。若將此對(duì)應(yīng)到二叉樹上,Wi為葉結(jié)點(diǎn),Li為根結(jié)點(diǎn)到葉結(jié)點(diǎn)的路徑長度。那么,(W1*L1)+(W2*L2)+…+(Wi*Li)恰好為二叉樹上帶權(quán)路徑長度。因此,設(shè)計(jì)電文總長最短的二進(jìn)制前綴編碼,就是以n種字符出現(xiàn)的頻率作權(quán),構(gòu)造一棵哈夫曼樹6.離散平穩(wěn)信源熵求解說明離散平穩(wěn)信源也是一種非常重要的信源。不同時(shí)刻信源輸出符號(hào)的概率分布完全相同,則稱為一維離散平穩(wěn)信源。二維離散平穩(wěn)信源就是信源輸出的隨機(jī)序列…,X1,X2,…,Xi,…,滿足其一維和二維概率分布與時(shí)間起點(diǎn)無關(guān)。這種各維聯(lián)合概率分布均勻與時(shí)間起點(diǎn)無關(guān)的完全平穩(wěn)信源稱離散平穩(wěn)信源。二維離散平穩(wěn)信源的聯(lián)和熵為:,此值表示原來信源X輸出任意一對(duì)可能的消息的共熵,即描述信源X輸出長度為2的平均不確定性,或所含的信息量,因此可用作為二維離散平穩(wěn)信源的信息熵的近似值。在通信系統(tǒng)的各種信源中,離散隨機(jī)信源是最基本的一種信源,信源輸出是單個(gè)的符號(hào)的消息,并且消息之間是兩兩互不相容的。我們知道,事件發(fā)生的不確定性與事件發(fā)生的概率有關(guān):事件的發(fā)生概率越小,不確定性就越大,事件發(fā)生的概率越大,不確定性就越小,對(duì)于發(fā)生概率為1的必然事件就不存在不確定性。設(shè)一離散信源的概率空間為:......即,如果知道已發(fā)生,則該事件所含有的信息量稱自信息,表達(dá)式為:上面的自信息是指某一信源發(fā)出某一消息所含的信息量,但所發(fā)消息不同,它們所含信息量也就不同,所以自信息不能作為整個(gè)信源的信息測(cè)度,我們定義平均自信息量,即對(duì)每個(gè)事件各自所攜帶的信息量做一個(gè)加權(quán)平均,也稱信息熵,表示如下:信息熵具有一些基本的性質(zhì),比如,對(duì)稱性,確定性,非負(fù)性,擴(kuò)展性,可加性等等。這里面有一個(gè)最大離散熵定理,表明:離散信源情況下,對(duì)于具有q個(gè)符號(hào)的離散信源,只有在q個(gè)信源符號(hào)等可能出現(xiàn)的情況下,信源熵才能達(dá)到最大值,這樣也表明等概率分布信源的平均不確定性為最大。7.哈夫曼編碼編程方式說明哈夫曼編碼(HuffmanCoding)是一種編碼方式,也是可變字長編碼(VLC)的一種。這種方法完全依據(jù)字符出現(xiàn)的概率來構(gòu)造異字頭的平均長度最短的碼字,有時(shí)稱之為最佳編碼,一般就叫作哈夫曼編碼。對(duì)于M進(jìn)制哈弗曼編碼,為了提高編碼效率,就要使長碼的符號(hào)數(shù)量盡量少、概率盡量小,所以應(yīng)使合并的信源符號(hào)位于縮減信源序列盡可能高的位置上,以減少再次合并的次數(shù),充分利用短碼。在這個(gè)信息量爆炸的時(shí)代,凡是能載荷一定信息量,且碼字的平均長度最短,可分離的變長碼的碼字集合稱為最佳變長碼。為此,必須將概率大的信息符號(hào)編以短的碼字,概率小的符號(hào)編以長的碼字,使得平均碼字最短。能獲得最佳碼的編碼方法主要有:香農(nóng)(Shannon)、費(fèi)諾(Fano)、哈夫曼(Huffman)編碼等。哈夫曼(Huffman)編碼是一種常用的壓縮編碼方法,是Huffman于1952年為壓縮文本文件建立的。它的基本原理是頻繁使用的數(shù)據(jù)用較短的代碼代替,較少使用的數(shù)據(jù)用較長的代碼代替,每個(gè)數(shù)據(jù)的代碼各不相同。哈夫曼壓縮是個(gè)無損的壓縮算法,一般用來壓縮文本和程序文件。哈夫曼壓縮屬于可變代碼長度算法一族。意思是個(gè)體符號(hào)用一個(gè)特定長度的位序列替代。因此,在文件中出現(xiàn)頻率高的符號(hào),使用短的位序列,而那些很少出現(xiàn)的符號(hào),則用較長的位序列。哈夫曼編碼是哈夫曼樹的一個(gè)應(yīng)用,是一種最優(yōu)的前綴技術(shù),然而其存在的不足卻制約了它的直接應(yīng)用。首先,其解碼時(shí)間為O(lavg),其中l(wèi)avg為碼字的平均長度;其次,更為重要的是,解碼器需要知道哈夫曼編碼樹的結(jié)構(gòu),因而編碼器必須為解碼器保存或傳輸哈夫曼編碼樹。對(duì)于小量數(shù)據(jù)的壓縮而言,這是很大的開銷。因而,應(yīng)用哈夫曼編碼的關(guān)鍵是如何降低哈夫曼編碼樹的存儲(chǔ)空間。目前流行的很多壓縮方法都是用了該技術(shù),如 GZIB、ZLIB、PNC等。對(duì)于多進(jìn)制哈夫曼編碼,為了提高編碼效率,就要是長碼的符號(hào)數(shù)量盡量少、概率盡量小,所以信源符號(hào)數(shù)量最好滿足n=(m-1)*k+r,其中m為進(jìn)制數(shù),k為縮減的次數(shù)。設(shè)計(jì)步驟如下:[1]將信源符號(hào)按概率從大到小的順序排列,令p(x1)≥p(x2)≥…≥p(xn)[2]給兩個(gè)概率最小的信源符號(hào)p(xn-1)和p(xn)各分配一個(gè)碼位“0”和“1”,將這兩個(gè)信源符號(hào)合并成一個(gè)新符號(hào),并用這兩個(gè)最小的概率之和作為新符號(hào)的概率,或者在新添加一個(gè)信源符號(hào),令其概率為0,則個(gè)分配一個(gè)碼位“0”、“1”和“2”,將其合并,結(jié)果得到一個(gè)只包含(n-1)個(gè)信源符號(hào)的新信源。稱為信源的第一次縮減信源,用S1表示。[3]將縮減信源S1的符號(hào)仍按概率從大到小順序排列,此后每次合并3個(gè)信源符號(hào),得到只含(n-3)個(gè)符號(hào)的縮減信源S2。[4]重復(fù)上述步驟,直至最后,此時(shí)所剩符號(hào)的概率之和必為1。然后從最后一級(jí)縮減信源開始,依編碼路徑向前返回,就得到各信源符號(hào)所對(duì)應(yīng)的碼字。第三章設(shè)計(jì)流程圖1.信源熵編程計(jì)算設(shè)計(jì)流程圖2.哈夫曼編碼程序設(shè)計(jì)流程圖3.軟件介紹3.1VisualC++6.0簡(jiǎn)介VisualC++6.0,簡(jiǎn)稱VC或者VC6.0,是微軟推出的一款C++編譯器,將“高級(jí)語言”翻譯為“機(jī)器語言(低級(jí)語言)”的程序。VisualC++是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。VisualC++6.0由Microsoft開發(fā),它不僅是一個(gè)C++編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrateddevelopmentenvironment,IDE)。VisualC++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lassWizard等開發(fā)工具。這些組件通過一個(gè)名為DeveloperStudio的組件集成為和諧的開發(fā)環(huán)境。Microsoft的主力軟件產(chǎn)品。VisualC++是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。VisualC++6.0以擁有“語法高亮”,自動(dòng)編譯功能以及高級(jí)除錯(cuò)功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及創(chuàng)建預(yù)編譯頭文件(stdafx.h)、最小重建功能及累加連結(jié)(link)著稱。這些特征明顯縮短程序編輯、編譯及連結(jié)的時(shí)間花費(fèi),在大型軟件計(jì)劃上尤其顯著。3.2主要部分[1]DeveloperStudio圖1DeveloperStudio環(huán)境這是一個(gè)集成開發(fā)環(huán)境,我們?nèi)粘9ぷ鞯?9%都是在它上面完成的,再加上它的標(biāo)題赫然寫著“MicrosoftVisualC++”,所以很多人理所當(dāng)然的認(rèn)為,那就是VisualC++了。其實(shí)不然,雖然DeveloperStudio提供了一個(gè)很好的編輯器和很多Wizard,但實(shí)際上它沒有任何編譯和鏈接程序的功能,真正完成這些工作的幕后英雄后面會(huì)介紹。我們也知道,DeveloperStudio并不是專門用于VC的,它也同樣用于VB,VJ,VID等VisualStudio家族的其他同胞兄弟。所以不要把DeveloperStudio當(dāng)成VisualC++,它充其量只是VisualC++的一個(gè)殼子而已。這一點(diǎn)請(qǐng)切記![2]MFC從理論上來講,MFC也不是專用于VisualC++,BorlandC++,C++Builder和SymantecC++同樣可以處理MFC。同時(shí),用VisualC++編寫代碼也并不意味著一定要用MFC,只要愿意,用VisualC++來編寫SDK程序,或者使用STL,ATL,一樣沒有限制。不過,VisualC++本來就是為MFC打造的,VisualC++中的許多特征和語言擴(kuò)展也是為MFC而設(shè)計(jì)的,所以用VisualC++而不用MFC就等于拋棄了VisualC++中很大的一部分功能。但是,VisualC++也不等于MFC。[3]PlatformSDK這才是VisualC++和整個(gè)VisualStudio的精華和靈魂,雖然我們很少能直接接觸到它。大致說來,PlatformSDK是以MicrosoftC/C++編譯器為核心(不是VisualC++,看清楚了),配合MASM,輔以其他一些工具和文檔資料。上面說到DeveloperStudio沒有編譯程序的功能,那么這項(xiàng)工作是由誰來完成的呢?是CL,是NMAKE,和其他許許多多命令行程序,這些我們看不到的程序才是構(gòu)成VisualStudio的基石。第三章程序運(yùn)行及結(jié)果1.計(jì)算信源熵結(jié)構(gòu)截圖2.哈夫曼樹編程截圖結(jié)果3.設(shè)計(jì)內(nèi)容舉例結(jié)果分析例:對(duì)如下單符號(hào)離散無記憶信源編三進(jìn)制哈夫曼碼。這里:m=3,n=8令k=3,m+k(m-1)=9,則s=9-n=9-8=1所以第一次取m-s=2個(gè)符號(hào)進(jìn)行編碼。由計(jì)算可得:平均碼長為:(3.1)信息率為: (3.2)編碼效率為: (3.3)可見:哈夫曼的編碼效率相當(dāng)高,對(duì)編碼器的要求也簡(jiǎn)單得多。編碼過程如下:表1哈夫曼編碼信源符號(hào)概率縮減信源碼字碼長0.40.0901EQ00.22022012101.012010.181020.11120.11220.072120.062220.0520030.0420130001212102圖2哈夫曼樹 第五章課程設(shè)計(jì)心得體會(huì)此次課程設(shè)計(jì),受益頗多。將書本上的理論知識(shí)應(yīng)用到實(shí)例中,進(jìn)一步掌握了信源熵與與哈夫曼編碼的相關(guān)知識(shí)點(diǎn),也更熟悉的掌握了C語言編碼。在課程設(shè)計(jì)的過程中,也遇到了一些問題,但這也正是課程設(shè)計(jì)的目的所在,發(fā)現(xiàn)自身的不足。我們深刻意識(shí)到自己在學(xué)習(xí)中的弱點(diǎn),同時(shí)也找到了克服這些弱點(diǎn)的方法,這是在此活動(dòng)中得到的一筆很大的財(cái)富。在以后的時(shí)間中,我們應(yīng)該利用更多的時(shí)間去上機(jī)實(shí)驗(yàn),多編寫程序,相信不久后我們的編程能力都會(huì)有很大的提高。同時(shí)也感謝老師給我們這次機(jī)會(huì),發(fā)現(xiàn)自身存在的缺點(diǎn)與不足,從而在以后的大學(xué)生活中更好的提升和完善自我。附錄1.參考文獻(xiàn)[1]曹雪虹,張宗橙.信息論與編碼.北京:清華大學(xué)出版社,2007.[2]王慧琴.數(shù)字圖像處理.北京:北京郵電大學(xué)出版社,2007.[3]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)。北京:清華大學(xué)出版社,2009.[4]賈宗璞,許合利.C語言程序設(shè)計(jì):人民郵電出版社,2010.2.哈幅曼樹調(diào)試程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include<math.h>#defineKongJian200typedefstructHafuman{ charZiMu; doubleweight; intparent, lchild, rchild;}HTNode,*HafumanTree;typedefchar**HafumanCode;voidinitial(HafumanTree&HT,intn){ for(inti=0;i<2*n-1;i++) { HT[i].lchild=0; HT[i].rchild=0; HT[i].parent=0; }}intinput(HafumanTree&HT,double*H){ printf("哈夫曼編碼、信源熵及編碼效率\n"); HT=(HafumanTree)malloc(KongJian*sizeof(HTNode)); if(HT==NULL) return0; inti=0; doublesum=0.0; for(sum=0.0;sum!=1.0;i++) { if(sum>1.0) printf("輸入有錯(cuò)誤,請(qǐng)關(guān)閉命令窗重新運(yùn)行\(zhòng)n"); else printf("\n請(qǐng)輸入第%d個(gè)符號(hào):",i+1); scanf("%c",&HT[i].ZiMu); printf("\n請(qǐng)輸入%c的概率:",(HT+i)->ZiMu); scanf("%lf",&HT[i].weight); sum+=(HT+i)->weight; *H=*H+(-log(HT[i].weight)*HT[i].weight)/log(2.0); HT[i].lchild=HT[i].rchild=i; } printf("\n實(shí)驗(yàn)結(jié)果如下:\n"); initial(HT,i); returni;}voidselect(HafumanTrees,intn,int*a,int*b){ doublemin=1.0; for(inti=0;i<n;i++) { if((min>(s+i)->weight)&&(s+i)->parent==0) { min=(s+i)->weight; *a=i; } } min=1.0; for(inti=0;i<n;i++) { if(i==*a) continue; if(min>(s+i)->weight&&(s+i)->parent==0) { min=(s+i)->weight; *b=i; } }}voidcreatHafumanTree(HafumanTree&HT,intn){ ints1=0, s2=0; for(inti=n;i<2*n-1;i++) { select(HT,i,&s1,&s2); HT[s1].parent=i; HT[s2].parent=i; HT[i].lchild=s1; HT[i].rchild=s2; HT[i].weight=HT[s1].weight+HT[s2].weight; }}intcmp(constvoid*a,constvoid*b){ return-1;}intcreatHafumanCode(HafumanTreeHT,HafumanCode&HC,intn,double*CL){ if((HC=(HafumanCode)malloc(n*sizeof(char*)))==NULL) return0; char*code=NULL; intnum_1=0, j=0, start=0, number=0; for(inti=0;i<n;i++) { if((code=(char*)malloc(n*sizeof(char)))==NULL) return0; start=0; num_1=HT[i].parent; j=i; while(num_1!=0) { if(HT[num_1].lchild==j) code[start++]='0'; else code[start++]='1'; number+=1; j=num_1; num_1=HT[j].parent; } qsort(code,start,sizeof(char),cmp); *(code+start)='\0'; HC[i]=code; } *CL=(double)number/(double)n;}voidprint(HafumanTreeHT,HafumanCodeHC,intn,doubleH,doubleCL){ for(inti=0;i<n;i++) { printf("\n%c的編碼是:",HT[i].ZiMu); puts(HC[i]); } printf("\n信源熵是:%f.",H); printf("\n編碼效率為:%f%%.",(H/CL)*100);}intmain(void){ HafumanTreestring=NULL; HafumanCodecode_string=NULL; doubleCL=0.0; doubleH=0.0; intlength=0; length=input(string,&H); creatHafumanTree(string,length); creatHafumanCode(string,code_string,length,&CL); print(string,code_string,length,H,CL); printf("\n\n本次試驗(yàn)成功!\n"); free(string); free(code_string); return0;}3.信源熵計(jì)算調(diào)試程序#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<math.h>intcheck(char*s);voidinitial(void);structShuju{ longintcishu; doublegl; chardata;}Jc[256];intmain(void){ FILE*fp=NULL; char*filename=NULL; if((filename=(char*)malloc(500*sizeof(char))) ==NULL) { return0; } do{ printf("請(qǐng)拖入一個(gè)以字母命名的文件:"); gets(filename); }while(!check(filename)); if((fp=fopen(filename,"r"))==NULL) {printf("文件名為:'filename'的文件不存在"); return0; fclose(fp); } printf("\n開始讀入文件內(nèi)容"); initial(); longintnumber=0L; doubleXys=0.0; charch='0'; while(!feof(fp)) { ch=fgetc(fp); if(ch<=255&&ch>=0) { ch=(ch<='Z'&&ch>='A')?(ch+32):ch; Jc[ch].cishu+=1; Jc[ch].data=ch; number+=1; } } for(inti=0;i<256;i++) { if(Jc[i].cishu==0) continue; Jc[i].gl=static_cast<double>(Jc[i].cishu)/static_cast<double>(number); Xys=Xys+(-log(Jc[i].gl)*Jc[i].gl)/log(2.0); printf("\n其中%c字符的個(gè)數(shù)為:%d,概率是:%4.5f。",Jc[i].data,Jc[i].cishu,Jc[i].gl); } printf("\n該信源的熵是:%.4f.",Xys); printf("\n本次試驗(yàn)正常運(yùn)行\(zhòng)n"); fclose(fp); return0;}voidinitial(void){ for(inti=0;i<256;i++) { Jc[i].cishu=0; }}intcheck(char*s){ inti=0; while(*(s+i)!='\0') i++; if(*(s+i-4)=='.' &&*(s+i-3)=='t' &&*(s+i-2)=='x' &&*(s+i-1)=='t') return1; else { return0; }}江西農(nóng)業(yè)大學(xué)工學(xué)院《機(jī)械原理》課程設(shè)計(jì)學(xué)生姓名:

專業(yè)及班級(jí):

學(xué)號(hào):

設(shè)計(jì)名稱:

20-09-05目錄1.設(shè)計(jì)題目……………32.工作原理及工藝動(dòng)作過程…………3設(shè)計(jì)原始數(shù)據(jù)及設(shè)計(jì)要求…………4原動(dòng)機(jī)構(gòu)、傳動(dòng)機(jī)構(gòu)和執(zhí)行機(jī)構(gòu)的確定…………………5動(dòng)作關(guān)系……………56.功能分解……………67.設(shè)計(jì)方案圖擬………78.設(shè)計(jì)方案的評(píng)比和選擇……………129.運(yùn)動(dòng)方案擬定及運(yùn)動(dòng)循環(huán)…………1410.上沖頭、下沖頭設(shè)計(jì)………………1511.心得體會(huì)……………1812.參考書目……………191、設(shè)計(jì)題目設(shè)計(jì)自動(dòng)壓片成形機(jī),將具有一定濕度的粉狀原料(如陶瓷干粉、藥粉)定量送入壓形位置,經(jīng)壓制成形后脫離該位置。機(jī)器的整個(gè)工作過程(送料、壓形、脫離)均自動(dòng)完成。該機(jī)器可以壓制陶瓷圓形片坯、藥劑(片)等。2.工作原理及工藝動(dòng)作過程自動(dòng)壓片機(jī)的功能是將不加粘結(jié)劑的干粉料(如圓形方糖、藥粉)定量送入壓形置壓制成φ×h圓型片坯,經(jīng)壓制成形后脫離該位置。機(jī)器的整個(gè)工作過程(送料、壓形脫離)均自動(dòng)完成。該機(jī)器可以壓制圓形片坯、藥劑(片)等。其工藝動(dòng)作的分解如圖1圖1工藝動(dòng)作分解1)干粉料均勻篩入圓筒形型腔(圖1.1)。2)下沖頭下沉,預(yù)防上沖頭進(jìn)入型腔時(shí)粉料撲出(圖1.3)。3)上、下沖頭同時(shí)加壓,并保持一段時(shí)間(圖1.4)。4)上沖頭退出,下沖頭隨后頂出壓好的片坯(圖1.5)。5)料篩推出片坯(圖1.6)。3.設(shè)計(jì)原始數(shù)據(jù)及設(shè)計(jì)要求圖3、壓片成形機(jī)設(shè)計(jì)數(shù)據(jù)方案號(hào)電動(dòng)機(jī)轉(zhuǎn)速r/min生產(chǎn)率片/min成品尺寸(Φ×d)mm,mm沖頭壓力kgδmkgmkgA145010100×6015,0000.10125B9701560×3510,0000.08104C9702040×2010,0000.0593

上沖頭、下沖頭、送料篩的設(shè)計(jì)要求是:1).上沖頭完成往復(fù)直移運(yùn)動(dòng)(鉛錘上下),下移至終點(diǎn)后有短時(shí)間的停歇,起保壓作用,保壓時(shí)間為0.4秒左右。因沖頭上升后要留有料篩進(jìn)入的空間,故沖頭行程為90~100mm。因沖頭壓力較大,因而加壓機(jī)構(gòu)應(yīng)有增力功能(如圖3.2a)。2).下沖頭先下沉3mm,然后上升8mm,加壓后停歇保壓,繼而上升16mm,將成型片坯頂?shù)脚c臺(tái)面平齊后停歇,待料篩將片坯推離沖頭后,再下移21mm,到待料位置(如圖3.2b)。3).料篩在模具型腔上方往復(fù)振動(dòng)篩料,然后向左退回。待批料成型并被推出型腔后,料篩在臺(tái)面上右移約45~50mm,推卸片坯(如圖3.2c)。圖3.2原動(dòng)機(jī)構(gòu)、傳動(dòng)機(jī)構(gòu)和執(zhí)行機(jī)構(gòu)的確定4.1原動(dòng)機(jī)選擇電機(jī)的容量主要由電動(dòng)機(jī)運(yùn)行時(shí)的發(fā)熱情況而定,而發(fā)熱又與其工作情況而定。工作機(jī)所需工作功率Pw,應(yīng)由工作阻力和運(yùn)動(dòng)參數(shù)計(jì)算得來的,可按下式計(jì)算:

Pw=Tn/9550

Kw

其中:T——工作機(jī)的阻力矩,N·mm;

n--工作機(jī)的轉(zhuǎn)速r/min;

經(jīng)過綜合考慮決定選用額定轉(zhuǎn)數(shù)970r/min的B方案電動(dòng)機(jī)4.2傳動(dòng)機(jī)構(gòu)選取額定轉(zhuǎn)速為970r/min1.確定總傳動(dòng)比電動(dòng)機(jī)轉(zhuǎn)速n=970r/min凸輪轉(zhuǎn)速nI(lǐng)=20r/mini總=n/nI=970/20=48.52.傳動(dòng)比的分配將總傳動(dòng)比按各級(jí)傳動(dòng)進(jìn)行分配i總=i1*i2*i3*i4……in(式中i1,i2,i3,i4……in為各級(jí)傳動(dòng)的傳動(dòng)比)13876傳動(dòng)系統(tǒng)采用四級(jí)減速機(jī)構(gòu),第一級(jí)為帶傳動(dòng),第二級(jí)為減速器傳動(dòng),第三級(jí)為帶傳動(dòng),第四級(jí)為帶傳動(dòng)。按前述傳動(dòng)比分配原則,為使傳動(dòng)構(gòu)件獲得較小尺寸,結(jié)構(gòu)緊湊,可采用傳動(dòng)比“先小后大”原則。因此初選i1=1.6,i2=30。第二級(jí)減速器內(nèi)部齒輪結(jié)構(gòu)如下圖所示。13876313H76548312313H7654831222圖中各齒輪數(shù)位Z1=30Z2=20Z3=70Z4=42Z5=20Z7=20Z8=42從1齒輪輸入600r/min,從H行星架輸出20r/min,則i=30,即W1/WH=30,即當(dāng)W1=30時(shí),Va=W1R1=900W1=1,VR=W1*OR=50對(duì)于2行星輪,2VR=VP-VQ=100,則VP=1000,W3=VP/R3=1000/70=100/7當(dāng)W=100/7,W=-30時(shí),W=1,現(xiàn)以1齒輪為主動(dòng),3齒輪為從動(dòng),添加右側(cè)輪系,使i=30*7/100=21:10,即Z小:Z大=20:42調(diào)整方向增加介輪Z6=22根據(jù)設(shè)計(jì)要求,上沖頭,下沖頭和送料篩同時(shí)進(jìn)行,所以第三級(jí)和第四級(jí)的傳動(dòng)比為1。3.各級(jí)傳動(dòng)比的分配表傳動(dòng)比分配i1i2i3i41.63011根據(jù)設(shè)計(jì)要求、工藝性能、結(jié)構(gòu)要求和總傳動(dòng)比等條件選擇傳動(dòng)系統(tǒng)類型,選定帶傳動(dòng)和齒輪傳動(dòng)4.3執(zhí)行機(jī)構(gòu)執(zhí)行機(jī)構(gòu)分三部分:①實(shí)現(xiàn)上沖頭上下運(yùn)動(dòng)的主加壓機(jī)構(gòu);②實(shí)現(xiàn)下沖頭上下運(yùn)動(dòng)的輔助加壓機(jī)構(gòu);③實(shí)現(xiàn)料篩左右運(yùn)動(dòng)的上、下料機(jī)構(gòu)。各執(zhí)行機(jī)構(gòu)必須能滿足工藝上的運(yùn)動(dòng)要求,可以有多種不同型式的機(jī)構(gòu)供選用。形態(tài)學(xué)矩陣功能元解上沖頭機(jī)構(gòu)齒輪機(jī)構(gòu)A1連桿機(jī)構(gòu)A2凸輪機(jī)構(gòu)A3下沖頭機(jī)構(gòu)曲線槽導(dǎo)桿機(jī)構(gòu)B1凸輪機(jī)構(gòu)B2連桿機(jī)構(gòu)B3送料機(jī)構(gòu)蝸輪蝸桿機(jī)構(gòu)C1凸輪機(jī)構(gòu)C2曲柄滑塊機(jī)構(gòu)C3系統(tǒng)解的可能方案數(shù):F=3×3×3=27其中列出較為理想的方法:A2+B2+C25.動(dòng)作關(guān)系上沖頭、下沖頭與送料篩的動(dòng)作關(guān)系見表4。表4動(dòng)作關(guān)系上沖頭進(jìn)退送料篩退近休進(jìn)遠(yuǎn)休下沖頭退近休進(jìn)遠(yuǎn)休6.功能分解及機(jī)構(gòu)選用該干粉壓片機(jī)通過一定的機(jī)械能把原料(干粉)壓制成成品,其功能分解如下圖設(shè)計(jì)干粉壓片機(jī),其總功能可以分解成以下幾個(gè)工藝動(dòng)作:送料機(jī)構(gòu):為間歇直線運(yùn)動(dòng),這一動(dòng)作可以通過凸輪完成(2)篩料:要求篩子往復(fù)震動(dòng),這一動(dòng)作可以通過凸輪完成(3)推出片坯:下沖頭上升推出成型的片坯(4)送成品:通過凸輪推動(dòng)篩子來將成型的片坯擠到滑道(5)上沖頭往復(fù)直線運(yùn)動(dòng),最好實(shí)行快速返回等特性。(6)下沖頭間歇直線運(yùn)動(dòng),這一動(dòng)作可以通過凸輪完成。7.設(shè)計(jì)方案圖擬7.1上沖頭運(yùn)動(dòng)方案一:渦輪蝸桿和曲柄導(dǎo)桿滑塊機(jī)構(gòu)方案二:CCABDA,B,C,D四個(gè)桿件,D上固連上沖頭方案三:1121為渦輪蝸桿,2為偏置曲柄滑塊機(jī)構(gòu)。7.2下沖頭運(yùn)動(dòng)凸輪機(jī)構(gòu)7.3料篩運(yùn)動(dòng)112(篩料處有一個(gè)向凸輪的力)凸輪的一邊制造成鋸齒形,在篩子上施加一個(gè)適當(dāng)大小的力,方向指向凸輪,使篩子可以來回移動(dòng),凸輪的結(jié)構(gòu)使得篩子在行進(jìn)過程中會(huì)出現(xiàn)停頓的情況,使其符合要求8.設(shè)計(jì)方案的評(píng)比和選擇上沖頭方案方案一:方案一渦輪蝸桿和曲柄導(dǎo)桿滑塊機(jī)構(gòu),滿足上沖頭的設(shè)計(jì)要求,但較復(fù)雜,運(yùn)動(dòng)的穩(wěn)定性不好,造價(jià)較高。承載能力一般傳動(dòng)平穩(wěn)噪音小但下壓力不足,經(jīng)濟(jì)性一般,運(yùn)動(dòng)不易控制,傳動(dòng)性不佳,機(jī)械生產(chǎn)要求高。方案二:方案二為一曲柄搖桿機(jī)構(gòu),由曲柄為主動(dòng)件帶動(dòng)搖桿搖動(dòng)以及滑塊上下運(yùn)動(dòng),應(yīng)用范圍廣可調(diào)性高運(yùn)轉(zhuǎn)精度較高計(jì)算自由度:S=3n-2PL-PH=3*3-2*4=1可實(shí)現(xiàn)運(yùn)動(dòng)需要。具有很好的傳動(dòng)性,結(jié)構(gòu)簡(jiǎn)單經(jīng)濟(jì)性好工業(yè)制造較為簡(jiǎn)單,維修跟換方便,可大批量制造生產(chǎn),暫為最佳選擇。方案三:方案三機(jī)構(gòu)簡(jiǎn)單,產(chǎn)生的壓力較大,滿足上沖頭的增力要求,傳動(dòng)比較平穩(wěn)、準(zhǔn)確,但是成本較高,效率比較低。綜上所述,在三個(gè)方案中,方案二為最佳方案。下沖頭方案該方案為凸輪機(jī)構(gòu),下沖頭的設(shè)計(jì)要求有三個(gè)休止階段,即:藥粉進(jìn)入型腔后下沖頭下降3mm并休止,壓制完成后的休止和將藥片推出型腔時(shí)的休止。選用凸輪機(jī)構(gòu)就能很好地實(shí)現(xiàn)此運(yùn)動(dòng)要求,而且設(shè)計(jì)方便,容易實(shí)現(xiàn),但是機(jī)構(gòu)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論