From 692837e8fb594d8cd09d60577b05062be509cedb Mon Sep 17 00:00:00 2001
From: Laura Nervo <laura.nervo@esrf.fr>
Date: Thu, 22 Aug 2013 14:39:47 +0200
Subject: [PATCH] gtReadTextFile : added argument 'iscell2mat' to convert from
 cell to matrix

Signed-off-by: Laura Nervo <laura.nervo@esrf.fr>
---
 zUtil_Cryst/gtCrystCalculateReflections.m     |  4 ++--
 .../gtCrystCalculateSymmetryOperators.m       |  8 +++----
 zUtil_Help/gtReadTextFile.m                   | 22 +++++++++++++------
 3 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/zUtil_Cryst/gtCrystCalculateReflections.m b/zUtil_Cryst/gtCrystCalculateReflections.m
index 9f3d77b0..8d93746c 100644
--- a/zUtil_Cryst/gtCrystCalculateReflections.m
+++ b/zUtil_Cryst/gtCrystCalculateReflections.m
@@ -58,14 +58,14 @@ cmd = sprintf('%s %s %f %f %d %s %s', ...
 [~, msg] = gtPythonCommand(cmd, true); disp(msg);
 
 % read the full list of reflections
-[~,Cmat] = gtReadTextFile([filename 'all.txt'],'%f %f %f %f',[1 3],'Delimiter','\n','CommentStyle','#');
+[~,Cmat] = gtReadTextFile([filename 'all.txt'],'%f %f %f %f',[1 3],true,'Delimiter','\n','CommentStyle','#');
 
 % extracting information
 hklsp = Cmat(:,1:3);
 sinthlsp = Cmat(:,4);
 
 % read the full list of reflections
-[~,Cmat] = gtReadTextFile([filename 'unique.txt'],'%f %f %f %f',[1 3],'Delimiter','\n','CommentStyle','#');
+[~,Cmat] = gtReadTextFile([filename 'unique.txt'],'%f %f %f %f',[1 3],true,'Delimiter','\n','CommentStyle','#');
 
 % extracting information
 hkl = Cmat(:,1:3);
diff --git a/zUtil_Cryst/gtCrystCalculateSymmetryOperators.m b/zUtil_Cryst/gtCrystCalculateSymmetryOperators.m
index 102b398f..bc901923 100644
--- a/zUtil_Cryst/gtCrystCalculateSymmetryOperators.m
+++ b/zUtil_Cryst/gtCrystCalculateSymmetryOperators.m
@@ -44,10 +44,10 @@ script_file = fullfile(GT_MATLAB_HOME, 'zUtil_Python', 'symmetry_operators_list.
 disp(msg);
 
 % read produced files      
-permN     = gtReadTextFile(['perm_' crystal_system '.txt'],'%f %f %f',[3 3],'Delimiter',' ','CommentStyle','#');
-rotN      = gtReadTextFile(['rot_' crystal_system '.txt'],'%f %f %f',[3 3],'Delimiter',' ','CommentStyle','#');
-sg_rotN   = gtReadTextFile(['sg_rot_' crystal_system '.txt'],'%f %f %f',[3 3],'Delimiter',' ','CommentStyle','#');
-sg_transN = gtReadTextFile(['sg_trans_' crystal_system '.txt'],'%f %f %f',[1 3],'Delimiter',' ','CommentStyle','#');
+permN     = gtReadTextFile(['perm_' crystal_system '.txt'],'%f %f %f',[3 3],true,'Delimiter',' ','CommentStyle','#');
+rotN      = gtReadTextFile(['rot_' crystal_system '.txt'],'%f %f %f',[3 3],true,'Delimiter',' ','CommentStyle','#');
+sg_rotN   = gtReadTextFile(['sg_rot_' crystal_system '.txt'],'%f %f %f',[3 3],true,'Delimiter',' ','CommentStyle','#');
+sg_transN = gtReadTextFile(['sg_trans_' crystal_system '.txt'],'%f %f %f',[1 3],true,'Delimiter',' ','CommentStyle','#');
 
 symm = struct('g3', rotN, 'perm', permN);
 if nargout == 2
diff --git a/zUtil_Help/gtReadTextFile.m b/zUtil_Help/gtReadTextFile.m
index d16b6b7f..e4568f65 100644
--- a/zUtil_Help/gtReadTextFile.m
+++ b/zUtil_Help/gtReadTextFile.m
@@ -1,14 +1,15 @@
-function [Ccell,Cmat] = gtReadTextFile(filename, formatS, minsize, varargin)
+function [Ccell,Cmat] = gtReadTextFile(filename, formatS, minsize, iscell2mat, varargin)
 % GTREADTEXTFILE  Reads textfiles into matrices
 %
-%     [Ccell, Cmat] = gtReadTextFile(filename, formatS, minsize, varargin)
-%     ------------------------------------------------=-------------------
+%     [Ccell, Cmat] = gtReadTextFile(filename, formatS, minsize, iscell2mat, varargin)
+%     ------------------------------------------------=-------------------------------
 %
 %     INPUT:
 %       filename  = text file to be read <string>
 %       formatS   = format pattern as in fprintf <string> i.e. '%f %f %f'
 %       minsize   = minimum size of element to be consider as object (like
 %                   matrix 3x3 or vector 1x3)
+%       iscell2mat = transform to matrix <logical>
 %       varargin  = optional argument for textscan
 %
 %     OUTPUT:
@@ -20,17 +21,24 @@ function [Ccell,Cmat] = gtReadTextFile(filename, formatS, minsize, varargin)
 %
 %     Version 001 03-12-2012 by LNervo
 
+if ~exist('iscell2mat','var') || isempty(iscell2mat)
+    iscell2mat = false;
+end
 
 fid = fopen(filename,'r');
 C = textscan(fid, formatS, varargin{:});
 fclose(fid);
 
-Cmat = cell2mat(C);
+if iscell2mat
+    Cmat = cell2mat(C);
 
-if minsize(1)>0 && minsize(2)>0
-    for ii = 1 : size(Cmat,1)/minsize(1)
-        C{ii} = Cmat((ii-1)*minsize(1)+1:minsize(1)*ii,1:minsize(2));
+    if minsize(1)>0 && minsize(2)>0
+        for ii = 1 : size(Cmat,1)/minsize(1)
+            C{ii} = Cmat((ii-1)*minsize(1)+1:minsize(1)*ii,1:minsize(2));
+        end
     end
+else
+    Cmat = [];
 end
 
 Ccell = C;
-- 
GitLab