Switch to side-by-side view

--- a
+++ b/Image features calculation code/Not Working/dlmread_mod.m
@@ -0,0 +1,194 @@
+function result= dlmread_mod(filename,delimiter,r,c,range)
+%DLMREAD Read ASCII delimited file.
+%   RESULT = DLMREAD(FILENAME) reads numeric data from the ASCII
+%   delimited file FILENAME.  The delimiter is inferred from the formatting
+%   of the file.
+%
+%   RESULT = DLMREAD(FILENAME,DELIMITER) reads numeric data from the ASCII
+%   delimited file FILENAME using the delimiter DELIMITER.  The result is
+%   returned in RESULT.  Use '\t' to specify a tab.
+%
+%   When a delimiter is inferred from the formatting of the file,
+%   consecutive whitespaces are treated as a single delimiter.  By
+%   contrast, if a delimiter is specified by the DELIMITER input, any
+%   repeated delimiter character is treated as a separate delimiter.
+%
+%   RESULT = DLMREAD(FILENAME,DELIMITER,R,C) reads data from the
+%   DELIMITER-delimited file FILENAME.  R and C specify the row R and column
+%   C where the upper-left corner of the data lies in the file.  R and C are
+%   zero-based so that R=0 and C=0 specifies the first value in the file.
+%
+%   All data in the input file must be numeric. DLMREAD does not operate 
+%   on files containing nonnumeric data, even if the specified rows and
+%   columns for the read contain numeric data only.
+%
+%   RESULT = DLMREAD(FILENAME,DELIMITER,RANGE) reads the range specified
+%   by RANGE = [R1 C1 R2 C2] where (R1,C1) is the upper-left corner of
+%   the data to be read and (R2,C2) is the lower-right corner.  RANGE
+%   can also be specified using spreadsheet notation as in RANGE = 'A1..B7'.
+%
+%   DLMREAD fills empty delimited fields with zero.  Data files where
+%   the lines end with a non-space delimiter will produce a result with
+%   an extra last column filled with zeros.
+%
+%   See also DLMWRITE, TEXTSCAN, LOAD, FILEFORMATS.
+
+% Obsolete syntax:
+%   RESULT= DLMREAD(FILENAME,DELIMITER,R,C,RANGE) reads only the range specified
+%   by RANGE = [R1 C1 R2 C2] where (R1,C1) is the upper-left corner of
+%   the data to be read and (R2,C2) is the lower-right corner.  RANGE
+%   can also be specified using spreadsheet notation as in RANGE = 'A1..B7'.
+%   A warning will be generated if R,C or both don't match the upper
+%   left corner of the RANGE.
+
+%   Copyright 1984-2006 The MathWorks, Inc.
+%   $Revision: 5.40.4.13 $  $Date: 2006/10/02 16:32:30 $
+
+% Validate input args
+fid = -1;
+if nargin==0
+    error('MATLAB:dlmread:Nargin','Not enough input arguments.'); 
+end
+
+% Get Filename
+if ~ischar(filename)
+    error('MATLAB:dlmread:InvalidInputType','Filename must be a string.'); 
+end
+
+% Get Delimiter
+if nargin==1 % Guess default delimiter
+    [fid message] = fopen(filename);
+	if fid < 0
+		error('MATLAB:dlmread:FileNotOpened',...
+			'The file ''%s'' could not be opened because: %s',filename,message);
+	end
+	str = fread(fid, 4096,'*char')';
+    frewind(fid);
+    delimiter = guessdelim(str);
+    if isspace(delimiter);
+        delimiter = '';
+    end 
+else
+    delimiter = sprintf(delimiter); % Interpret \t (if necessary)
+end
+if length(delimiter) > 1,
+    error('MATLAB:dlmread:InvalidDelimiter',...
+          'DELIMITER must be a single character.');
+end
+
+% Get row and column offsets
+offset = 0;
+if nargin<=2, % dlmread(file) or dlmread(file,dim)
+    r = 0;
+    c = 0;
+    nrows = -1; % Read all rows
+    range = [];
+elseif nargin==3, % dlmread(file,delimiter,range)
+    if length(r)==1, % Catch obsolete syntax dlmread(file,delimiter,r)
+        warning('MATLAB:dlmread:ObsoleteSyntax',...
+        'Obsolete syntax. C must be specified with R.');
+        result= dlmread(filename,delimiter,r,0);
+        return
+    end
+    range = r;
+    if ischar(range)
+        range = str2rng(range);
+    end
+    r = range(1);
+    c = range(2);
+    nrows = range(3) - range(1) + 1;
+elseif nargin==4, % dlmread(file,delimiter,r,c)
+    nrows = -1; % Read all rows
+    range = [];
+elseif nargin==5, % obsolete syntax dlmread(file,delimiter,r,c,range)
+    if ischar(range)
+        range = str2rng(range);
+    end
+    rold = r; cold = c;
+    if r > range(3) || c > range(4), result= []; return, end
+    if r ~= range(1) || c ~= range(2)
+        warning('MATLAB:dlmread:InvalidRowsAndColumns',...
+        ['R and C should match RANGE(1:2).  Use DLMREAD(FILE,DELIMITER,RANGE)' ...
+         ' instead.'])
+        offset = 1;
+    end
+    % For compatibility
+    r = max(range(1),r);
+    c = max(range(2),c);
+    nrows = range(3) - r + 1;
+end
+
+% attempt to open data file
+if fid == -1
+    [fid message] = fopen(filename);
+    if fid < 0
+        error('MATLAB:dlmread:FileNotOpened',...
+            'The file ''%s'' could not be opened because: %s',filename,message);
+    end
+end
+
+% Read the file using textscan, modified from dlmread to read strings
+try
+	if isempty(delimiter)
+		result  = textscan(fid,'%s',nrows,'headerlines',r,'headercolumns',c,...
+						   'returnonerror',0,'emptyvalue',0, 'CollectOutput', true);
+	else
+		delimiter = sprintf(delimiter);
+		whitespace  = setdiff(sprintf(' \b\t'),delimiter);
+		result  = textscan(fid,'%s',nrows,...
+					   'delimiter',delimiter,'whitespace',whitespace, ...
+					   'headerlines',r,'headercolumns',c,...
+					   'returnonerror',0,'emptyvalue',0,'CollectOutput', true);
+	end
+catch
+	fclose(fid);
+	rethrow(lasterror);
+end
+
+% close data file
+fclose(fid);
+result = result{1};
+% textscan only trims leading columns, trailing columns may need clipping
+if ~isempty(range)
+    ncols = range(4) - range(2) + 1;
+
+    % adjust ncols if necessary
+    if ncols ~= size(result,2)
+        result= result(:,1:ncols);
+    end
+end
+
+% num rows should be correct, textscan clips
+if nrows > 0 && nrows ~= size(result,1)
+    error('Internal size mismatch')
+end
+
+
+% When passed in 5 args, we have an offset and a range.  If the offset is
+% not equal to the top left corner of the range the user wanted to read
+% range Ai..Bj and start looking in that matrix at rold and cold.  For
+% backwards compatibility we create a result the same size as the specified
+% range and place the data in the result at the requested offset.
+
+% For example, given a file with [1 2 3; 4 5 6], reading A1..C2 with offset
+% 1,2 produces this result:
+% 0 0 0
+% 0 5 6
+
+if nargin==5 && offset
+    rowIndex = rold+1:rold+nrows;
+    columnIndex = cold+1:cold+ncols;
+    if rold == 0
+        rowIndex = rowIndex + 1;
+    end
+    if cold == 0
+        columnIndex = columnIndex + 1;
+    end
+
+    % assign into a new matrix of the desired size
+    % need to create temp matrix here cuz we want the
+    % offset region filled with zeros
+    new_result(rowIndex,columnIndex) = result;
+    result = new_result;
+end
+