www.gusucode.com > Matlab动力系统和时间序列分析工具箱 > Matlab动力系统和时间序列分析工具箱/lab432/gui/open_data.m

    function open_data;
% OPEN_DATA load data in Lab432

% last modified 28.08.07

global TS GSD_GLOBALS

file_name='';
var_name='';

[State,fname,pname,DATA,varname]=file_open(file_name,var_name);
if State
    clear_session(1);
    TS.data=DATA;
    [x,y]=size(DATA);
    for i=1:y
        TS.name{i}=['crd_' num2str(i)];
    end
    TS.time=(1:x)';
  	h=findobj('tag','MainFig');
    if ~isempty(h)
        set(h,'name',['Lab432  [' ,pname,fname,']']);
    end
    GSD_GLOBALS.en_dis.datapresent=1;
    gui_en_dis;
    button = questdlg('Data are loaded. View it?',...
        '','Yes','No','No');
    if strcmp(button,'Yes')
        view_data;
    end
end 


function [State,fname,pname,DATA,varname]=file_open(file_name,var_name);
% FILE_OPEN is the utility function for OPEN_DATA
% Using: [State,fname,pname,DATA,varname]=file_open(file_name,var_name);
% State-{0-Error,
%        1- read OK }
% fname-file name
% pname-path to the file
% varname-name of used variable in data file
% file_name and var_name see in OPEN_DATA
%
% last modified 24.09.04

State=0; DATA=[]; varname=[];
[pname,fname,ext,versn] = fileparts(file_name);
if isempty(fname)
	[fname, pname] = uigetfile( { '*.mat','MAT-files (*.mat)' }, ...
        'Select data file...');
	if fname==0 
        return;
	end;
else
    if ~isempty(ext)
        fname=[fname ext];
    end
end

S=load([pname,fname]);
if isempty(var_name)
	fn=fieldnames(S);% get all variables names
    if length(fn)>1
		[Selection,ok] = listdlg('ListString',fn,'SelectionMode','Single','Name','Select a variable');
		if ok==0
            return
		end
    else
        Selection=1;
    end
	DATA=getfield(S,fn{Selection});
    varname=fn{Selection};
else
	DATA=getfield(S,var_name);
    varname=var_name;
end
    
if ~isa(DATA,'double')
    errordlg('Unable to open this variable. Type should be ''double''','Open Error');
    return
end
if length(size(DATA))~=2
    errordlg('Unable to open variable. It must be vector or matrix','Open Error');
    return
end
    
State=1;