1 function [varargout]=load_plt(filename, varargin)
14 if strcmp(varargin(it), 'nopermute')
16 elseif strcmp(varargin(it),
'permute')
18 % permute_mask = varargin(it+1);
19 elseif strcmp(varargin(it), 'squeeze')
21 elseif strcmp(varargin(it), 'nosqueeze')
23 elseif strcmp(varargin(it), 'nozone')
25 elseif strcmp(varargin(it), 'first_zone')
26 first_zone = varargin{it+1};
28 elseif strcmp(varargin(it),
'n_zones')
29 n_zones = varargin{it+1};
31 elseif strcmp(varargin(it),
'skip_zones')
32 skip_zones = varargin{it+1};
37 %
if (~(strcmp(varargin(1),
'dosqueeze')))
43 fid = fopen(filename);
46 while (length(f_names) == 0 || f_names(1) ==
'#')
47 comments = [comments, f_names];
51 f_names = regexpi(f_names,
'"(.*?)"',
'match');
52 n_of_vars = size(f_names,2);
54 %%% vars(it).name = strrep(f_names(it){1},
'"',
''); %%%
55 vars(it).name = strrep(f_names{it},
'"',
''); %%%
56 vars(it).comments = comments;
64 while (~nozone && ((length(tmp) < 4) || (strcmpi(tmp([1:4]),
'ZONE') ~= 1)))
68 % assume all zones have the same size. Would not work otherwise anyway.
69 t = regexpi(tmp,
'T="(.*)"',
'tokens');
70 if (length(t) > 0) time = str2num(t{1}{1}); end;
72 t = regexpi(tmp,
'I=\D*([0-9]+)',
'tokens');
73 if (length(t) > 0) size1 = str2num(t{1}{1});
else size1 = 0; end;
74 t = regexpi(tmp,
'J=\D*([0-9]+)',
'tokens');
75 if (length(t) > 0) size2 = str2num(t{1}{1});
else size2 = 0; end;
76 t = regexpi(tmp,
'K=\D*([0-9]+)',
'tokens');
77 if (length(t) > 0) size3 = str2num(t{1}{1});
else size3 = 0; end;
80 while((length(tmp) >= 4) && (
max(tmp ~= -1)) && strcmpi(tmp([1:4]),
'ZONE') && zone_number < n_zones)
82 t = regexpi(tmp,
'T="(.*)"',
'tokens');
83 if (length(t) > 0) time = str2num(t{1}{1}); end;
85 % t = regexpi(tmp,
'I=\D*([0-9]+)',
'tokens');
86 %
if (length(t) > 0) size1 = str2num(t{1}{1});
else size1 = 0; end;
87 % t = regexpi(tmp,
'J=\D*([0-9]+)',
'tokens');
88 %
if (length(t) > 0) size2 = str2num(t{1}{1});
else size2 = 0; end;
89 % t = regexpi(tmp,
'K=\D*([0-9]+)',
'tokens');
90 %
if (length(t) > 0) size3 = str2num(t{1}{1});
else size3 = 0; end;
93 %
if ((
max(size(size1)) +
max(size(size2)) +
max(size(size2))) == 0)
94 if ((size1 + size2 + size2) == 0)
95 f_arr = fscanf(fid,
'%f', [n_of_vars, inf]);
96 size1 = size(f_arr, 2);
100 %
if (
max(size(size2)) == 0) size2 = 1; end;
101 %
if (
max(size(size3)) == 0) size3 = 1; end;
102 if (size2 == 0) size2 = 1; end;
103 if (size3 == 0) size3 = 1; end;
104 total_size = size1 * size2 * size3;
105 f_arr = fscanf(fid,
'%f', [n_of_vars, total_size]);
106 if (size2 == 1 && size3 == 1) size1 =
max(size(f_arr)); end;
109 tmp = fgetl(fid); % read to the end of line
110 while (~feof(fid) && ((length(tmp) < 4) || (strcmpi(tmp([1:4]),
'ZONE') ~= 1)))
114 if (zn >= first_zone-1)
117 ['Loading: time = ', num2str(time), '...']
120 zone_number = zone_number + 1;
121 for var_number = 1:n_of_vars
122 if (length(time) > 0) vars(var_number).time(zone_number) = time; end; %stupid, but
do not know other way to check
if it is number...
123 vars(var_number).size1 = size1;
124 vars(var_number).size2 = size2;
125 vars(var_number).size3 = size3;
126 vars(var_number).arr(zone_number, :, :, :) = reshape(f_arr(var_number, :), [size1, size2, size3]);
127 % vars(var_number).arr(zone_number, :, :, :) = reshape(f_arr(var_number, :), [size3, size2, size1]);
141 if (zone_number == 0)
double max(double v1, double v2)
Return maximum.