黑体辐射出射度曲线绘制
這是我在做紅外物理小作業(yè)時(shí)的代碼,雖然很簡(jiǎn)單但是我在寫的過(guò)程中也是體會(huì)到了編程真的是不斷實(shí)踐才能有所成 。另外記憶力好對(duì)于編程影響也挺大的,雖然此代碼很簡(jiǎn)單hh
?
%黑體的光譜輻射出射度的曲線繪制 %圖像盡量與紅外物理課本中67頁(yè)的圖3-5保持一致c1 = 3.7415e8;%第一輻射常數(shù)c2 = 1.438789e4;%第二輻射常數(shù) for T=500:100:900 % 設(shè)置輻射溫度(K)l=0.00001:0.0001:16; % 設(shè)置波長(zhǎng)范圍及間隔步長(zhǎng)M=1e-4.*(c1./(l.^5)./(exp(c2./(l.*T))-1)); % 計(jì)算指定溫度光譜輻出度,且此處乘以1e-4是將其中的m化為cm,以與課本中67頁(yè)的圖3-5一致plot(l,M,'r') % 繪制光譜輻出度曲線maxM = max(M); % 找出指定溫度最大光譜輻出度lnum=find(maxM==M); % 找峰值波長(zhǎng)索引text(l(lnum+100),M(lnum+20),[num2str(T),'K'],...'VerticalAlignment', 'bottom','fontsize',12) % 在指定的合適位置按給定方式標(biāo)記對(duì)應(yīng)溫度hold on end?一開(kāi)始考慮用flot畫,不過(guò)后來(lái)發(fā)現(xiàn)要寫5個(gè)flot函數(shù),,因?yàn)槭亲址问健A硗庾畲笾狄搽y求,只是個(gè)圖像,不過(guò)優(yōu)點(diǎn)就是方便。
fplot 命令
在實(shí)際的應(yīng)用中,用戶可能并不知道某一個(gè)函數(shù)隨自變量變化的趨勢(shì),此時(shí)若采用plot命令來(lái)繪圖,則有可能會(huì)因?yàn)樽宰兞康娜≈甸g隔不合理而使曲線圖形不能反應(yīng)出自變量在某些區(qū)域內(nèi)函數(shù)值的變化情況。
用戶可以將自變量間隔取得足夠小以體現(xiàn)函數(shù)值隨自變量變化的精確曲線,但是這樣會(huì)使數(shù)據(jù)量變大。
fplot 命令通過(guò)函數(shù)來(lái)取得繪圖的數(shù)值點(diǎn)矩陣。該命令通過(guò)內(nèi)部的自適應(yīng)算法來(lái)動(dòng)態(tài)決定自變量的取值間隔,當(dāng)函數(shù)值變化緩慢時(shí),間隔取大一點(diǎn);變化劇烈時(shí)(即函數(shù)的二階導(dǎo)數(shù)很大),間隔取小一點(diǎn)。
?
在看text函數(shù)的參數(shù)的文檔時(shí)發(fā)現(xiàn)要點(diǎn)擊input arguments中x的verticalalignment然后進(jìn)入textproperties頁(yè)面才能看見(jiàn)還有verticalalignment這個(gè)參數(shù),,不知道為什么這么設(shè)計(jì)。
%以下繪制過(guò)不同黑體輻射出射度曲線最大值的虛線xm = zeros(1,411);ym = zeros(1,411);%預(yù)定義最大值變量及其維數(shù) for T=500:910 % 設(shè)置輻射溫度(K)l=0.001:0.001:16; % 設(shè)置波長(zhǎng)范圍及計(jì)算步長(zhǎng)M=1e-4.*(c1./(l.^5)./(exp(c2./(l.*T))-1)); % 計(jì)算指定溫度光譜輻出度,且此處乘以1e-4是將其中的m化為cm,以與課本中67頁(yè)的圖3-5一致maxM = max(M); % 找出指定溫度最大光譜輻出度lnum=find(maxM==M); % 找峰值波長(zhǎng)索引ym(T-499) = maxM;xm(T-499) = l(lnum);%對(duì)最大值坐標(biāo)分量依次賦值 end plot(xm,ym,'--r') % 繪制過(guò)不同溫度下黑體光譜輻出度曲線最大值的曲線,并以虛線表示set(gca,'XTick',[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) %設(shè)置橫坐標(biāo)點(diǎn) xlabel('波長(zhǎng)\lambda / \mum') % 橫坐標(biāo)名稱及單位 ylabel('光譜輻射出射度M_{\lambda} / (W/(cm^{2}\cdot\mum)') % 縱坐標(biāo)名稱及單位 title('500-900k部分黑體的光譜輻射出射度曲線','fontsize',10) grid on由于MATLAB對(duì)矩陣的單個(gè)元素循環(huán)時(shí)速度很慢,如果把循環(huán)向量化,不僅能縮短程序的長(zhǎng)度,而且能提高程序的執(zhí)行效率。也就是程序優(yōu)化方法之一。程序優(yōu)化要對(duì)語(yǔ)言的特性熟悉。
另外向量預(yù)分配也是優(yōu)化方法之一:
Matlab 采用內(nèi)存中一塊連續(xù)的空間來(lái)存儲(chǔ)向量和矩陣數(shù)據(jù),而不是用鏈表。這就意味著你每給向量或矩陣增加一元素,Matlab需要尋找一塊足夠大的內(nèi)存區(qū)域來(lái)存儲(chǔ) 這個(gè)擴(kuò)大后的向量或矩陣,然后復(fù)制現(xiàn)有的數(shù)據(jù)到新的內(nèi)存區(qū)域。在循環(huán)中增加向量或矩陣元素的元數(shù)是允許的,但并不是明智之舉,而應(yīng)該是一次性分配向量或矩 陣的大小,或一次性重定義尺寸。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的黑体辐射出射度曲线绘制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么大部分牛人会选择通达信交易接口?
- 下一篇: 分享一个PPT模板