⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getfigdata.m

📁 能提取matlab的figure文件的x,y轴数据 非常好用! 网上收集的!
💻 M
字号:
function ldata = getfigdata(fignum)% GETFIGDATA extracts the data from the lines on a plot%  LDATA = GETFIGDATA(FIGNUM)%% GETFIGDATA retrieves the data from a MATLAB .fig file and saves it as%   workspace variables that you can use. GETFIGDATA only works for lines,%   not images or other data that might be in a .fig file.%% FIGNUM is the figure number of the plot of interest. If not given, the%         current plot is used.%% LDATA is a cell array with the data from each line from each%         axis in the plot. Each row is an axis and each column is a data%         set (a line). Each cell is a structure with fields X and Y. A%         figure with a basic plot of a single line will return a cell%         array with one item. More complex plots will return larger%         arrays.%% Example:%%   If Figure 2 is a plot of ten random numbers,%%   >> d = getfigdata(2)%%   d = % %       [1x1 struct]%%   retrieves the data from the lines in Figure 2. Access the data with cell%   notation (curly brackets):%%   >> d{1}%   ans = %             x: [1 2 3 4 5 6 7 8 9 10]%             y: [1x10 double]%     colorname: 'blue'%        Marker: 'none'%     %%   >> xpoints1 = d{1}.x;%   >> ypoints1 = d{1}.y;%%   etc. Complex plots have many lines that are not data (errorbars,%   arrows, etc). Use the color, Marker, and length to figure out which%   ones are the data.%%%% M. A. Hopcroft%  hopcroft at mems stanford edu%% MH MAY2007% v1.1  add LineStyle%       add line handle%% MH FEB2007% v1.0  change x,y cell arrays to line cell arrays%       add length display to help decide which cell has good data%       add color function (is there a built-in for this?)% v0.9%if nargin < 1    fignum = gcf;endfprintf(1,'getfigdata: Get data from figure number %d.\n', fignum);% how many axes are in the current figure?chillun = get(fignum,'Children');fprintf(1,'getfigdata: There are %d axes in the figure.\n', length(chillun));k=0;% for each axisfor i = chillun'    k=k+1;    % find all the lines on this axis    dataline = findobj(i,'Type','line');    fprintf(1,'getfigdata: Axis %f has %d lines.\n', i,length(dataline));    m=0;    % for each line, get the relevant properties    for j = dataline'        m=m+1;        ldata{m,k}.handle = j;        ldata{m,k}.x = get(j,'XData');        ldata{m,k}.y = get(j,'YData');        colordata = num2str(get(j,'Color'));        if ~isnumeric(Mgetcolorname(colordata))            ldata{m,k}.colorname = Mgetcolorname(colordata);        else            ldata{m,k}.Color = get(j,'Color');        end        ldata{m,k}.LineStyle = get(j,'LineStyle');        ldata{m,k}.Marker = get(j,'Marker');        if length(dataline) > 1            lengtharray(m,k)=length(ldata{m,k}.x);        end    endendif length(dataline) > 1    fprintf(1,'getfigdata: There are multiple lines;\n');    fprintf(1,'   The length of each data set is:\n');    disp(lengtharray)endreturnfunction lname = Mgetcolorname(ctriple)% Mgetcolor returns the long name for the common MATLAB colors.% LNAME = MGETCOLORNAME(CTRIPLE)%namearray = {    '1  1  0','yellow';    '1  0  1','magenta';    '0  1  1','cyan';    '1  0  0','red';    '0  1  0','green';    '0  0  1','blue';    '1  1  1','white';    '0  0  0','black';};lname = 0;for i = 1:length(namearray)    if strcmp(ctriple,namearray{i,1})        lname = namearray{i,2};    endendreturn

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -