巧用matlab提取圖片中的曲線數據(修訂版)_第1頁
巧用matlab提取圖片中的曲線數據(修訂版)_第2頁
巧用matlab提取圖片中的曲線數據(修訂版)_第3頁
巧用matlab提取圖片中的曲線數據(修訂版)_第4頁
巧用matlab提取圖片中的曲線數據(修訂版)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、yc97463240 歡迎索取本教程利用Matlab提取圖片中的數據(修訂版)從事科研或者工程的人員在文檔撰寫過程中,常需要將文獻中的曲 線與自己的結果對比,為獲取原始數據,一種常用的辦法是手動描點, 即將原始曲線放大然后打印出來,選取一定數量的點,讀出其橫縱坐標, 然后重繪。對于較為平坦的曲線,這種方法當然可行,但當曲線數量增 加,曲線變化復雜,這種方法工作量可想而知。前段時間由于原始數據 丟失,僅剩幾十幅圖片,本人嘗試過手動描點,經歷幾個小時奮戰(zhàn),實 在無法繼續(xù),索性轉向matlab,借助其強大的數據處理能力,編寫了兩個GUI的小軟件image2data、data_poly提取數據,如今大

2、功告成,遂于大 家分享。2010-12-26 yc974632402010年編寫軟件至今,已有一年,平均每個星期都有網友向我索要軟件或提出問題,與你們的交流很愉快,為答謝大家對我的鼓勵, 我決定:1、對本教程作出修改,針對大家容易出現錯誤的地方作出批注,并 在一個月內對程序進行改進。2、錄制視頻教程,更加直接的引導大家使用。最后申明,本教程完全免費,可在百度、豆丁和其他文檔分享類網站在線閱覽,教程會發(fā)布到優(yōu)酷上,如有需要,直接email索?。ㄒ话惝斕旎貜停?。2012-03-10yc97463240yc97463240 歡迎索取本教程本文分三部分:1、數據提取實驗演示;2、軟件編寫要點;3、附錄

3、。關心使用操作的朋友請 看第一部分,有興趣鉆研代碼的朋友請看第二部分,本軟件以功能實現為主,界面和操作方面略有不適,盡請諒解。1、數據提取演示實驗原始數據來源:安華高科技數據手冊(HSMP-38XX and HSMP-48XX Series ),如圖1所示。目標曲線:提取1MHz頻率下的PIN二極管電容與反偏電壓之間關系曲線。(dd- QZff5s0 Isol0,450.400.350.300.250.200.15yc97463240 歡迎索取本教程yc97463240 歡迎索取本教程REVERSE VOLTAGE (V)Figure RF Capacitance vs. Reverse Bi

4、as、HSMP-3810 Series,圖1包含目標曲線的原始圖像實驗步驟:Step1 :制作jpg圖片方法:利用PPT的圖片另存功能制作jpg圖片,本方法具有普遍性。首先從pdf中copy圖1,即上述包含數據坐標的曲線,然后paste到ppt的空白頁面,最后調整圖片大小,另存為figure1.jpg,如圖 2 所示。EW*! M-njKs.i n弭書 丄鼻Bnu 肛口葉串即-M-i- w*9 llk-L f Erf IE-bf C Fuvrf.PdiillS|-lHIWH YDUWC flFiiirF I ItlCapae II jnrr hw. HrhnwBJhk IKWF3ll!&rrl

5、nyc97463240 歡迎索取本教程yc97463240 歡迎索取本教程圖2利用ppt制作jpg格式圖像yc97463240 歡迎索取本教程首先運行 值,然后在REVERSE VOLTAGE (V)(電 WQZ2-025 ILCQApt5*ymn0y|UK:3豹MOOH3mmFisme 1 RF Capacitance vs. Reverite Biiis, MSMP-3810 Series.Step2 :導入圖片,填寫相關參數image2data.m或image2data.fig (程序采用 Matlab R2008b編寫),填寫坐標軸的最大最小import按鈕下的文本框輸入文件名figu

6、re1(默認jpg后綴),最后點解import按鈕導入圖片,如圖 3所示。yc97463240 歡迎索取本教程yc97463240 歡迎索取本教程圖3導入圖像并輸入相關參數特別關注:1、程序版本,如果采用 Matlab R2008b以外的版本可能出現不兼容的問題,如果運行出現問題請換用 R2008b。2、 文件路徑,Matlab每次啟動后會自動進入啟動路徑(startup directory),而程序編寫時采用相對路徑,所以請將jpg文件和程序copy到當前路徑對應的文 件夾(current directory),或者更改當前路徑為jpg文件和程序所在的文件夾,否則會出現未知錯誤。Step3

7、:坐標軸標定(關鍵)狀態(tài)欄介紹:cpx顯示當前取點橫坐標,cpy顯示當前取點縱坐標,兩者均為相對值,num顯示當前鼠標取點總數目(注意,初始點數為2,然后存處4個坐標軸標定坐標,剩余用來存儲曲線坐標)按鈕功能介紹:zoom on |按鈕?圖像放大,zoom out |按鈕?恢復初始顯示大小, 鼠標拖動圖像,pan on/off |按鈕?退出放大或者拖動操作模式,空?取點操作,pan on|按鈕?delete鍵?刪除最近一次取點數據。REVERSE VOLTAGE (V)Figure L RF Capacitance 啪古.Reverse Bias. HSMP SaiO Scries.$UJOI

8、M芒0此*01XWI471 1 iwmu1prAnmrfiE*圖4坐標軸定標坐標標定:本次需要標定四個坐標值,順序依次為Ymax? Ymin? Xmin? Xmax。操作時首先按下Zoom out按鈕恢復原始圖像顯示,然后利用|zoom on按鈕放大圖像、|pan on |按鈕平移圖像到合適位置后,按下pan on/of |按鈕退出放大或者拖動操作模式,最后按下空格鍵取點即可。如果操作失誤, 按下delete鍵可刪除最近一次取點數據。特別關注:1、 每次放大或者拖動操作完畢后,必須按下| pan on/off按鈕,才能用空格鍵進行取點操作。2、按下Room on |按鈕后,還可以用鼠標中間的滾

9、輪放大縮小圖片,十分方便。3、操作完畢,確認num顯示為6后方可進行曲線描點。Step4 :曲線描點(關鍵)按照上述操作反復進行圖像放大、拖動、取點操作,取點時狀態(tài)欄的cpx和cpy會顯示當前相對坐標(注意,這個坐標圖像坐標,y軸方向向下,后面坐標變換需要考慮)。根據需要確定取點數目,圖 5給出了描點完畢后的曲線,可以看出取點基本代表了曲線的全部信息。REVERSE VOLTAGE (V)JJL;zsdu_i.432562te-O01*l181536e-0014.981302246-001li. JlU 11683(-B013.934177e-fl01i|.257ia3e-fl315.i|58

10、 0088e-0911669735-0016-363241 Be001mu叭他-UEHli.UJUli0&Se-Bai3.94M21Se-0011.1149913e+0993.8786699 c-0011.363612+0003,77B91fl2t-B011.5Q777He+uUEI 71IH1 Ue-4B11.7fi09B99e0093.d164171c-fl011.977O775e+O003.54072ii5e-0012_39M116e+-0012.7QU722&e+aUB3.aM39236e-B013.12B960SeeBI93.25

11、U209e-Bai3.52685U9e*O803.1756187e-O013.?l75e+nc03-115W*t6e-001ti.235D971e*UEia3.0M087te-0(M4.4i776557e*e0B3.83B0217e-B01i|-8165877e+-0015,342 O3i06e+nn92.9ZBU9Q0B-OOI12.88665000-B01E 849ii616e-a91.65S2032e*0992,7873*00e-0B1圖7數據記錄文本Step6 :數據后處理由于data.txt文本中數據是手動選取的,分布不夠均勻,直接使用不太方便,所以我們需要

12、通過數據擬合,重新采樣得到等間距的數據。運行data_poly.m或者data_poly.fig,得到圖8所示的界面,該程序內置多項式擬合,其中nth代表多項式擬合的階數(一般 6就夠用了),num代表重新采樣的數據個數,xmin、ymin、xmax、ymax表示需要輸出數據的橫縱坐標范圍,程序默認輸入文本為data.txt,輸出文本為ndata.txt,數據擬合結果如下圖所示。圖8數據擬合再采樣結果可能大家會問,為什么兩個程序不合在一起呢?原因在于數據擬合包含的種類很多,最基本的為多項式擬合,其他的有指數、三角函數等等,針對不同的曲線,所采取的擬合函數不盡相同,matlab中的cftool工

13、具箱包含了很多的擬合函數,當 data_poly擬合效果不好時,大家可以試試 cftool工具。至此,數據提取過程完畢,只要大家按照步驟細心操作,提取曲線的速度和獲得數據的精度應該能讓你滿意。2、軟件編寫要點這兩個小軟件從構思到完成大概用了兩天,功能的完成絕大部分歸功于matlab豐富的函數庫和方便的 GUI,其中用到的主要函數主要有:imread, imshow, findobj, num2str, strcat, load, save, get, set.列表如下,更詳細的介紹請參閱matlab help文檔。表1主要函數列表In dexFunctionDescripti on1fin d

14、objLocate graphics objects w ith specific properties2 getQuery object properties3imreadRead image from graphics file4 imshc)WDisplay image5 loadLoad workspace variables from disk6nu m2strConvert nu mber to stri ng7saveSave workspace variables to disk8 setSet object properties9strcatCon cate nate str

15、i ngs horiz on tally除了上述函數的掌握之外,還需要對matlab的GUI數據結構和函數響應有一定的理解,在此就不多講了(多看 matlab help相關例程就明白了)。編寫程序之前,首先心中要有一個框架,做些什么,怎么做,順序如何等。本軟件的結構如下圖所示:yc97463240 歡迎索取本教程yc97463240 歡迎索取本教程導入圖像創(chuàng)建數據結構yc97463240 歡迎索取本教程yc97463240 歡迎索取本教程坐標軸定標曲線描點坐標變換數據后處理:擬合、重新采樣、存儲圖9程序流程示意導入圖像程序段:h_temp=fi ndobj(tag,edit8);str_img

16、=strcat(get(h_temp,Stri ng ), .jpg );%get full name of pictureimage_temp=imread(str_img);imshow(image_temp);%read and show創(chuàng)建數據結構程序段:han dles.cpx=0;han dles.cpy=0;% gloable variables for curre nt positi on of mousehan dles.idata=zeros(2,2);% the key variable for obta ining curve dataguidata(hObject,

17、han dles);坐標軸定標及坐標變換:%obta in in put axis imformatio ntemp=str2 nu m(get(fi ndobj(tag,edit1),stri ng);xmi n=temp;temp=str2 nu m(get(fi ndobj(tag,edit2),stri ng);xmax=temp;temp=str2 nu m(get(fi ndobj(tag,edit3),stri ng);ymi n=temp;temp=str2 nu m(get(fi ndobj(tag,edit4),stri ng);ymax=temp;%save axis t

18、o global variable idata idata(1:2,:)=xmi n,xmax;ymi n,ymax; idata=idata;ha ndles.idata(3:e nd,:);axis_p=idata(3:6,:);data_p=idata(7:e nd,:);% class idataxpm in=axis_p(3,1); xpmax=axis_p(4,1); ypmi n=axis_p(1,2); ypmax=axis p(2,2);%coord in ate tran sformdata_ new=data_p;data_ new(:,1)=data_p(:,1)-xp

19、m in;data_ new(:,2)=ypmax-data_p(:,2);data_ new(:,1)=data_ new(:,1)/(xpmax-xpm in);data_ new(:,2)=data_ new(:,2)/(ypmax-ypm in);data_ new(:,1)=xm in+data_ new(:,1)*(xmax-xm in); data_ new(:,2)=y min+data_ new(:,2)*(ymax-y min); %save results as a new variable idata(7:e nd,:)=data_ new;han dles .n ew

20、idata=idata; guidata(hObject,ha ndles);數據后處理代碼段:%obta in in put datayc97463240 歡迎索取本教程x=ha ndles.data(:,1);y=ha ndles.data(:,2); n=str2double(get(fi ndobj( n p=str2double(get(fi ndobj( xmin=str2double(get(fi ndobj( xmax=str2double(get(fi ndobj(tag , edit1 ), string );tag , edit2 ), stringtag , edit3

21、 ), stringtag , edit4 ), string);););yc97463240 歡迎索取本教程%data fitting and samlping p=polyfit(x,y, n);xn ew=xmi n:(xmax-xmi n)/(n p-1):xmax; yn ew=polyval(p,x new);%save results and plot curveplot(x,y, -*b,xn ew, yn ew,-+r);legend(orignal , fitting);han dles .n data=x new, yn ew;guidata(hObject,ha ndl

22、es);3、附錄3.1描點數據列表in dexxyin dexxy10.0663900.4432563110.0774380.25322320.1481530.4380023210.5563350.25086330.2415960.4319473311.2237890.24725740.3934420.4257133411.8078090.24378450.5458010.4168973512.3618110.24111260.6363240.4099963612.9750330.23848570.7940100.4039413713.4441890.23630480.9660660.3944

23、123814.0398910.23376691.1149910.3878673914.4895870.231361101.3636120.3770924014.9058770.229847111.5037770.3710814115.3672530.227755121.7609900.3616424215.7614670.226464131.9770780.3540724316.3033020.224371142.3941120.3418284416.9136040.221877152.7007230.3343924517.2815370.220497163.1209610.325042461

24、7.8184570.218983173.5268550.3175624718.3148750.216891183.9142760.3115064818.7295300.215510194.2354870.3066094919.3399400.214397204.4778560.3030025019.7020320.212972214.8165880.2987725119.9852820.212216225.3420310.292049235.6428010.288665246.0486960.284346256.6502030.278736267.0823790.274862277.78413

25、00.269030288.2338260.265512298.8966760.260792309.3960130.2578093.2數據擬合結果Lin ear model Poly9:fittedmodell(x) = p1*xA9 + p2*xA8 + p3*xA7 + p4*xA6 +p5*xA5+ p6*xA4 + p7*xA3 + p8*xA2 + p9*x + p10Coefficie nts(with 95% con fide nee boun ds):p1= 1.116e-010 (5.79e-011,1.653e-010)p2= -1.047e-008 (-1.528e-008

26、, -5.669e-009)P3=4.105e-007 (2.304e-007,5.905e-007)P4=-8.65e-006 (-1.231e-005,-4.986e-006)P5=0.0001044 (6.051e-005,0.0001483)p6=-0.0006919 (-0.001006,-0.0003775)p7=0.001806 (0.0005058,0.003107)p8=0.005695 (0.002846,0.008543)p9=-0.06124 (-0.06399,-0.05849)p10=0.4474 (0.4466,0.4482)3.3、重新采樣數據列表in dexx

27、yin dexxy10.0000000.4473685110.1010100.25309820.2020200.4352425210.3030300.25196230.4040400.4236555310.5050510.25085640.6060610.4126615410.7070710.24977550.8080810.4022915510.9090910.24871861.0101010.3925615611.1111110.24768171.2121210.3834755711.3131310.24666081.4141410.3750215811.5151520.24565391.

28、6161620.3671825911.7171720.244658101.8181820.3599326011.9191920.243671112.0202020.3532406112.1212120.242691122.2222220.3470736212.3232320.241715132.4242420.3413926312.5252530.240744142.6262630.3361606412.7272730.239776152.8282830.3313376512.9292930.238810163.0303030.3268876613.1313130.237846173.2323230.3227716713.3333330.236886183.4343430.3189556813.5353540.235930193.6363640.3154056913.7373740.234980203.8383840.3120887013.9393940.234036214.0404040.3089787114.1414140.233101224.2424240.3060487214.3434340.232177234.4444440.3032737314.5454550.231266244.6464650.3006357414.7474750.2303

溫馨提示

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

評論

0/150

提交評論