色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Matlab如何提取fig文件中的原始數據?

冬至子 ? 來源:Matlab Fans ? 作者:Matlab Fans ? 2023-07-20 17:30 ? 次閱讀

有時候運行的程序只保存了fig文件,而沒有保存原始數據,當需要對fig文件中的數據進行分析和處理時就會犯難了。本文詳細介紹Matlab如何提取fig文件中的原始數據,并提供原創的m函數,可方便實現各類figure圖形提取數據。

1. 思路

fig文件作為Matlab中的圖形文件,其實原始數據是會存儲在figure對象中的,那么通過get函數獲取figure對象中相應的數據屬性,就可以得到fig圖形中的數據。

例如現在有一個保存的fig圖形:

圖片

提取fig文件數據的方法為:

  • 第一步 :打開圖形(.fig)文件;

  • 第二步 :獲取曲線(line)句柄;

  • hl = get(ga,'Children')    % 獲取坐標軸的子對象:Line對象
    ha = get(gcf,'Children');  % 獲取當前的圖形的子對象:Axes坐標軸對象
    
  • 第三步 :獲取line對象的xdata、yadata屬性;

  • xdata = get(hl,'XData');
    ydata = get(hl,'YData');
    

    結果

    hl = 
      Line - 屬性:
                  Color: [0 0.4470 0.7410]
              LineStyle: '-'
              LineWidth: 0.5000
                 Marker: 'none'
             MarkerSize: 6
        MarkerFaceColor: 'none'
                  XData: [1×500 double]
                  YData: [1×500 double]
                  ZData: [1×0 double]
    

    圖片

可以看出繪制曲線的原始數據保存在line對象中,而line對象是axes的子對象,axes是figure的子對象。獲取fig文件原始數據的思路是:先找出figure對象的所有axes子對象,再找出每個坐標軸的所有line子對象,最后獲取每條line的XData、YData、ZData屬性,得到原始數據。

2. 函數

當figure圖形中的坐標軸很多或線條很多,或者需要對大量figure圖形進行批量處理時,上面的方法就很繁瑣,不便于操作。為此筆者開發了函數Fun_GetFigData.m,可以方便的提取各種類型figure圖形文件的原始數據。

function [XYZdata,Str] = Fun_GetFigData( hf,filename )
% XYZdata = Fun_GetFigData( hf ) 獲取figure圖的
% Str表頭字符串
% hf  Figure圖形句柄 或 Figure文件名(必須帶擴展名.fig)
% XYZdata 坐標數組
% filename 保存為xls文件的名稱,不輸入或輸入0時不保存xls文件
%                              輸入非零數值時,保存成xls文件,文件名與figure文件名相同
%                              輸入filename時按照輸入的字符串保存成xls文件
%                              注意filename不帶擴展名.xls
% Str 為與XYZdata一一對應的字符串cell數組,用于說明每列數據的表頭,在保存為xls文件時保存為表頭
% 文件調用規則,請打開下面例子
% open Test_Fun_GetFigData

3. 演示

**3.1 **提取單坐標軸單曲線二維圖原始數據

t = linspace(0,10,500);
y = sin(t);
hf = figure;
plot(t,y)
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值 XYZdata = [Xdata Ydata],第一列為X軸坐標數據,第二列為Y軸坐標數據。

圖片

3.2 提取單坐標軸雙曲線二維圖原始數據(橫坐標相同)

t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
hf = figure;
plot(t,y1,t,y2)
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值XYZdata = [Xdata Ydata1 Ydata2],第一列為X軸坐標數據,第二列為曲線1的Y軸坐標數據,第三列為曲線2的Y軸坐標數據。

圖片

**3.3 **提取單坐標軸雙曲線二維圖原始數據(橫坐標維數相同,但數值不同)

t1 = linspace(0,10,500);
y1 = sin(t1);
t2 = linspace(-10,0,500);
y2 = cos(t2);
hf = figure;
plot(t1,y1,t2,y2)
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值 XYZdata = [Xdata1Ydata1 Xdata2 Ydata2],第一列為曲線1的X軸坐標數據,第二列為曲線1的Y軸坐標數據,第三列為曲線2的X軸坐標數據,第四列為曲線2的Y軸坐標數據。

3.4 提取單坐標軸雙曲線二維圖原始數據(橫坐標維數不同)

t1 = linspace(0,10,500);
y1 = sin(t1);
t2 = linspace(-10,0,200);
y2 = cos(t2);
hf = figure;
plot(t1,y1,t2,y2)
XYZdata = Fun_GetFigData( hf );

結果 :返回值為1×2維cell數組,XYZdata = [坐標軸1、曲線1的數據],XYZdata = [坐標軸1、曲線1的數據]。

XYZdata =
  1×2 cell 數組
    {200×2 double}    {500×2 double}

**3.5 **提取單坐標軸雙曲線二維圖原始數據(橫坐標維數不同)

t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
hf = figure;
subplot(211)
plot(t,y1)
subplot(212)
plot(t,y1,t,y1+y2)
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值為2×1維cell數組,XYZdata = [坐標軸1的數據],XYZdata = [坐標軸2的數據]。

XYZdata =
  2×1 cell 數組
    {500×3 double}
    {500×2 double}

**3.6 **提取多子圖曲線二維圖原始數據

t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
y3 = tan(t);
y4 = cot(t);
hf = figure;
subplot(221)
plot(t,y1)
subplot(222)
plot(t,y2)
subplot(223)
plot(t,y3)
subplot(224)
plot(t,y4)
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值為4×1維cell數組,XYZdata = [坐標軸1的數據],XYZdata = [坐標軸2的數據] ,XYZdata = [坐標軸3的數據],XYZdata = [坐標軸4的數據]。

XYZdata =
  4×1 cell 數組
    {500×2 double}
    {500×2 double}
    {500×2 double}
    {500×2 double}

**3.7 **提取多子圖曲線二維圖原始數據

t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
hf = figure;
plotyy(t,y1,t,y2)
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值為2×1維cell數組,XYZdata = [坐標軸1的數據],XYZdata = [坐標軸2的數據]。

XYZdata =
  2×1 cell 數組
    {500×2 double}
    {500×2 double}

3.8****提取單坐標軸曲線三維圖原始數據

t = linspace(0,10,500);
y = sin(t);
z = cos(t);
hf = figure;
plot3(t,y,z)
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值 XYZdata = [Xdata Ydata Zdata],第一列為X軸坐標數據,第二列為Y軸坐標數據,第三列為Z軸坐標數據。

圖片

3.9****提取單坐標軸曲線三維曲面圖原始數據

[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
hf = figure;
surf(X,Y,Z);
XYZdata = Fun_GetFigData( hf );

圖片

結果 :返回值 XYZdata = [Xdata Ydata Zdata],第一列為X軸坐標數據,第二列為Y軸坐標數據,第三列為Z軸坐標數據。

圖片

3.10 提取原始數據,并將原始數據保存為xls文件(指定文件名)

t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
hf = figure;
plotyy(t,y1,t,y2)
XYZdata = Fun_GetFigData( hf,'雙坐標軸數據' ); % 指定文件名

結果 :按照指定文件名保存“雙坐標軸數據.xls”文件,每個坐標軸單獨存成一個工作表(sheet),曲線存儲在該坐標軸所對應的工作表中。

圖片

**3.11 **提取原始數據,并將原始數據保存為xls文件(默認文件名)

x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
figure
contour(X,Y,Z);
saveas(gcf,'等高線圖');   % 保存當前figure為'等高線圖.fig'
XYZdata = Fun_GetFigData( '等高線圖.fig',1 );

圖片

結果 :按照與fig文件相同的文件名保存“等高線圖.xls”文件,數據存儲在該坐標軸所對應的工作表中。

圖片

t1 = linspace(0,10,500);
y1 = sin(t1);
t2 = linspace(-10,0,200);
y2 = cos(t2);
hf = figure;
subplot(211)
plot(t1,y1,t2,y2)
subplot(212)
plot(t1,10*y1)
XYZdata = Fun_GetFigData( hf,1 );

結果 :按照與默認文件名保存“圖形數據.xls”文件,每個坐標軸中的每條曲線都單獨存成一個工作表(sheet),數據存儲在對應的工作表中。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • MATLAB仿真
    +關注

    關注

    4

    文章

    176

    瀏覽量

    19966
  • 圖形處理器
    +關注

    關注

    0

    文章

    201

    瀏覽量

    25628
  • 數據存儲器
    +關注

    關注

    1

    文章

    69

    瀏覽量

    17797
收藏 人收藏

    評論

    相關推薦

    如何使用Position2Go Board在MATLAB提取原始數據來繪制距離多普勒圖?

    有人可以分步解釋如何使用 Position2Go Board 在 MATLAB提取原始數據來繪制距離多普勒圖嗎?
    發表于 01-25 06:18

    無法使用MATLAB的Position2 Go雷達套件提取原始數據怎么解決?

    我無法使用 MATLAB 的 Position2 Go 雷達套件提取原始數據。 MATLAB 錯誤: 使用串行時出錯(第 99 行)指定了
    發表于 01-31 06:15

    IWR1443和DCA1000EVM采集了原始數據后,如何在MATLAB數據進行后續處理?

    IWR1443和DCA1000EVM采集了原始數據后,在MATLAB 以4x262144 表格存在,4代表4個接受器,26144=256x128x8,我想知道如果在MATLAB
    發表于 12-06 08:40

    用ads1292輸出的原始數據繪制心電波形可行嗎?

    在芯片處于RDATAC模式下,請教問題如下: 1. 用ads1292輸出的原始數據繪制心電波形可行嗎?我們這邊用原始數據繪制的波形很毛躁,看不出心電波形。 2. 若使用ad lead-off,如何在IC輸出數據
    發表于 12-23 08:26

    mpu6050+stm32的原始數據采集程序,通過串口發送到PC

    mpu6050+stm32的原始數據采集程序,通過串口發送到PC: printf("\r\n---------加速度X軸原始數據---------%d \r\n",GetData
    發表于 05-23 15:43

    mpu6050原始數據

    用51讀取mpu6050原始數據,為什么數據都是-004,而且還不變。代碼就是網上找的常見的。
    發表于 03-06 14:24

    如何通過波形原始數據獲得頻率

    目前在用stm32做一個小型心電儀,實現方法是通過AD轉換獲取心電波形的原始數據,然后進行分析,目前有一個關鍵的困難,那就是如何在知道這些原始數據的情況下,分析出心率,希望大家可以給一些建議和幫助,謝謝
    發表于 04-21 17:03

    數據庫寫入時如何覆蓋原始數據

    數據庫寫入時如何覆蓋原始數據
    發表于 10-25 11:29

    求幫寫一個篩選原始數據文件的程序,有償!

    原始數據中進行讀取文件,根據條件篩選判斷出想要的數據,進行保存!(LabVIEW)聯系qq:1154994116;
    發表于 03-20 11:16

    通過DMA1將原始數據寫入DAC寄存器

    序列,通過DMA1將原始數據寫入DAC寄存器,同時產生正弦波,AD讀取頻率稍大于DA頻率。將AD讀取寄存器數據以串口發送至matlab軟件,以實現對DAC
    發表于 08-17 07:16

    如何提取sensortile.box的原始數據?

    如何提取sensortile.box的原始數據?
    發表于 12-30 07:09

    如何將ADC采集的原始數據的序列轉換成VisualAnalogPattern Loader可以接受的I Only文件文件格式是怎樣的?

    如何將ADC采集的原始數據(從-8192~+8192)的序列轉換成VisualAnalogPattern Loader可以接受的I Only文件,文件格式是怎樣的?主要是用來評估采集
    發表于 12-15 06:22

    基于模板的SAR原始數據模擬

    合成孔徑雷達(Synthetic Aperture Radar,SAR)原始數據模擬是SAR 模擬的基礎,對SAR 系統研究有重要意義。時域模擬方法重現了回波數據的產生過程,數據逼真度高,被廣泛使用,但
    發表于 12-19 14:14 ?13次下載

    基于DCT-TCQ的SAR原始數據壓縮算法

    該文提出了一種基于離散余弦變換(DCT)和網格編碼量化(TCQ)的SAR 原始數據壓縮算法。SAR 原始數據可以看成是距離向和方位向的2 維線性調頻信號的線性平移疊加,因而含有豐富的
    發表于 06-23 14:29 ?0次下載

    用STM32實現MPU6050原始數據的讀取

    STM32+MPU6050讀取加速度計和陀螺儀原始數據。
    發表于 12-06 11:51 ?11次下載
    用STM32實現MPU6050<b class='flag-5'>原始數據</b>的讀取
    主站蜘蛛池模板: 中国特级黄色大片| 97国产精品久久精品国产| 538prom国产在线视频一区| 狠狠狠狠狠狠干| 亚洲 欧洲 国产 日产 综合| 成人国产亚洲精品A区天堂蜜臀| 欧美精品一区二区在线电影| 精油按摩日本| 亚洲第一天堂无码专区| 国产午夜亚洲精品不卡电影| 亚洲精品第二页| 久久国产高清字幕中文| 战狼4在线观看完免费完整版| 久久人妻少妇嫩草AV蜜桃35I | 性生大片免费看| 中文字幕无码一区二区免费| 久青草国产在线观看视频| 《乳色吐息》无删减版在线观看 | 花蝴蝶在线观看中字| 亚洲AV怡红院AV男人的天堂| 韩国g奶空姐| 永久免费在线观看视频| 妈妈的朋友5在线观看免费完整版中文| 2022国产精品不卡a| 日本理论片午午伦夜理片2021 | 午夜家庭影院| 九九夜夜妹子| 中文字幕1| 秋霞午夜一级理论片久久| 国产成人精品男人免费| 亚洲国产成人精品无码区99| 久久久擼擼擼麻豆| VIDEOSGGRATIS欧美另类| 国产精亚洲视频综合区| 野花高清影视免费观看| 男人国产AV天堂WWW麻豆| 野花视频在线观看免费| 男人都懂www深夜免费网站| 国产扒开美女双腿屁股流白浆| 亚洲精品一二三| 免费视频国产在线观看网站|