從fig文件中讀取數據

原文地址:http://blog.sina.com.cn/s/blog_4015d6ce0100ujwh.htmlhtml

MATLAB:從fig文件中讀取數據做者:GameGaming數組

1 若是你的fig文件中的圖像每一個像素都有數據,能夠經過如下方式得到圖像每一個點的值,輸出data是矩陣,大小是圖像像素的行列數spa

open('figname.fig');.net

h=get(gca,'Children');htm

data=get(h,'Cdata');對象

 

2 若是你的fig文件中圖像是由單條曲線繪製而成,好比說plot命令生成的,經過如下方式輸出橫座標,縱座標的取值blog

open('figname.fig');圖片

subplot(2,1,2);%當一個.fig中有多個圖形時,加這句指明讀取的圖片 這句含義是:在2X1的fig中讀取第二個圖的數據get

h_line=get(gca,'Children');%get line handlesgc

xdata=get(h_line,'Xdata');

ydata=get(h_line,'Ydata');

 

3 若是你的fig文件中圖像是由三維單條曲線繪製而成,好比說plot3命令生成的,經過如下方式輸出x,y,z 座標的取值

open('figname.fig');

h_line=get(gca,'Children');%get line handles

xdata=get(h_line,'Xdata');

ydata=get(h_line,'Ydata');

zdata=get(h_line,'Zdata');

 

4 若是你的fig文件中圖像是由多條曲線繪製而成,好比說plot命令生成的,經過如下方式輸出橫座標,縱座標的取值

open('figname.fig');

lh = findall(gca, 'type', 'line');% 若是圖中有多條曲線,lh爲一個數組

xc = get(lh, 'xdata');           % 取出x軸數據,xc是一個元胞數組

yc = get(lh, 'ydata');           % 取出y軸數據,yc是一個元胞數組

%若是想取得第2條曲線的x,y座標

x2=xc{2};

y2=yc{2};

 

如下來自:http://blog.csdn.net/myj0513/article/details/7403716

5 figure上只有一個axis:

(1)首先調用h = findobj(gca,'Type','line')命令取得曲線的句柄;

(2)而後調用xdata=get(h,'XData')和ydata=get(h,'YData')取得曲線的數據。

 

6 figure上有幾個axis,即用subplot等畫得圖像:(小注:這個方法我試過了,很差用。可能有未知錯誤)

clc;clear

x=1:10;

y1=x.^2;

y2=x.^3;

subplot(2,1,1)

plot(x,y1)

subplot(2,1,2)

plot(x,y2)

figure_info=findall(gcf,'type','line');

xc1=get(figure_info(1,:),'xdata')

xc2=get(figure_info(2,:),'xdata')

yc1=get(figure_info(1,:),'ydata')

yc2=get(figure_info(2,:),'ydata')

 

這樣就能夠將全部子圖中的曲線信息都找出來。

對比了findall help文件,其中findall中的handle_list能夠是一下幾種:

gcf 返回當前Figure對象的句柄值

gca返回當前axes對象的句柄值

gco返回當前鼠標單擊的句柄值,該對象能夠是除root對象外的任意圖形對象,而且Matlab會把當前圖形對象的句柄值存放在Figure的CurrentObject屬性中。

 

7 figure上是個二維圖像

h=findobj(gcf,'type','image');

img=get(h,'CData');

 

8 figure上是曲面圖像

figure_info=findall(gcf,'type','surf');

xx=get(figure_info,'xdata');

yy=get(figure_info,'ydata');

z=get(figure_info,'zdata');

 

 

最終本身使用的代碼

 注:該代碼對應的matlab版本需與fig對應版本一致

clear,clc open('1.fig'); subplot(2,1,1);subplot(2,1,2); lh = findall(gca, 'type', 'line');% 若是圖中有多條曲線,lh爲一個數組 xc = get(lh, 'xdata');           % 取出x軸數據,xc是一個元胞數組 yc = get(lh, 'ydata');           % 取出y軸數據,yc是一個元胞數組 a1=[xc{1,1}]'; a2=[xc{2,1}]'; a3=[xc{3,1}]'; a4=[xc{4,1}]'; a5=[xc{5,1}]'; a6=[xc{6,1}]'; a7=[xc{7,1}]'; a8=[xc{8,1}]'; %a=[a1 a2 a3 a4 a5 a6 a7 a8]; a=[a1 a2 a3 a4]; b1=[yc{1,1}]'; b2=[yc{2,1}]'; b3=[yc{3,1}]'; b4=[yc{4,1}]'; b5=[yc{5,1}]'; b6=[yc{6,1}]'; b7=[yc{7,1}]'; b8=[yc{8,1}]'; %b=[b1 b2 b3 b4 b5 b6 b7 b8];%2 3 4有四個數據的第四個數據錯誤 b=[b1 b2 b3 b4];%2 3 4有四個數據的第四個數據錯誤

相關文章
相關標籤/搜索