From help-request at octave dot org Sun Jan 30 08:51:42 2005 Subject: split From: =?ISO-8859-1?Q?S=F8ren_Hauberg?= To: help at octave dot org Date: Sun, 30 Jan 2005 15:55:45 +0100 This is a multi-part message in MIME format. --------------070505020009020306020603 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hi I'm starting to do some work with rather large text files (5mb and above) using the split function. On my slow laptop this isn't possible because split is too slow (it takes hours) so I've altered the split function to make it faster. I've attached my implementation. I haven't done alot of testing but it should work, and it's much more fast. /Søren P.S. If this isn't the right place to post this, then I'm sorry --------------070505020009020306020603 Content-Type: text/x-objcsrc; name="split.m" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="split.m" ## Copyright (C) 1996 Kurt Hornik ## ## This file is part of Octave. ## ## Octave is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2, or (at your option) ## any later version. ## ## Octave is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, write to the Free ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. ## -*- texinfo -*- ## at deftypefn {Function File} {} split (@var{s}, @var{t}) ## Divides the string at var{s} into pieces separated by @var{t}, returning ## the result in a string array (padded with blanks to form a valid ## matrix). For example, ## ## at example ## split ("Test string", "t") ## at result{} "Tes " ## " s " ## "ring" ## at end example ## at end deftypefn ## Author: Kurt Hornik ## Adapted-By: jwe function m = split (s, t) if (nargin != 2) usage ("split (s, t)"); endif if (isstr (s) && isstr (t)) l_s = length (s); l_t = length (t); if (l_s == 0) m = ""; return; elseif (l_s < l_t) error ("split: s must not be shorter than t"); endif if (l_t == 0) m = s'; return; else ind = findstr (s, t, 0); if (length (ind) == 0) m = s; return; endif ind2 = [1, ind+l_t]; ind = [ind, l_s+1]; %ind = [1 - l_t, ind, l_s + 1]; endif ind_diff = ind-ind2; % Create a matrix of the correct size that's filled with spaces m_rows = length(ind) m_cols = max(ind_diff) m = char( zeros(m_rows, m_cols) + ' ' ); % Copy the strings to the matrix for i = 1:length(ind) tmp = ind2(i):(ind(i)-1); m(i, 1:length(tmp)) = s(tmp); end else error ("split: both s and t must be strings"); endif endfunction --------------070505020009020306020603-- ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------