- your title asks about relative paths, but your question and examples only show absolute paths.
- you show examples where you call two different functions (once read_c3d_feat and once read_nvidia_c3d_feat), but you do not explain the difference, nor why you expect them to behave in the same way.
- The first error message explains clearly that there is an invalid character in the string. Please place this code exactly before that line, and show us what it displays when the error occurs:
Load files from relative path
    11 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Sanjay Saini
 el 25 de Mayo de 2017
  
    
    
    
    
    Comentada: Walter Roberson
      
      
 el 25 de Mayo de 2017
                function []= read_c3d_feat(output_list_relative)
        % rather than fileread, importdata save each line separetely.
        dir_list = importdata(output_list_relative);
        dim_feat = 512;
        for i = 1 : size(dir_list, 1)
            dir_str = char(dir_list(i));
            feat_files = dir([dir_str, '/*.res5b']);
            num_feat = length(feat_files);
            feat = zeros(num_feat, dim_feat);
            for j = 1 : num_feat
                feat_path = strcat(dir_str, '/', feat_files(j).name);
                [~, feat(j,:)] = read_binary_blob(feat_path);
            end
When i give input from command line like: read_c3d_feat('C:/Users/abc/Documents/MATLAB/features/0021.res5b')
Error using dir
Invalid path. The path must not contain a null character.
Error in read_c3d_feat (line 12)
        feat_files = dir([dir_str, '/*.res5b']);
And When i give input from command line like: read_c3d_feat('C:/Users/abc/Documents/MATLAB/features')
Error using importdata (line 226)
Unable to load file.
Use TEXTSCAN or FREAD for more complex formats.
Error in read_c3d_feat (line 6)
    dir_list = importdata(output_list_relative);
Caused by:
    Error using fread
    Invalid file identifier. Use fopen to generate a valid file identifier.
2 comentarios
  Stephen23
      
      
 el 25 de Mayo de 2017
				
      Editada: Stephen23
      
      
 el 25 de Mayo de 2017
  
			You question is unclear. In particular:
+[dir_str, '/*.res5b']
  Sanjay Saini
 el 25 de Mayo de 2017
				
      Editada: Sanjay Saini
 el 25 de Mayo de 2017
  
			
		Respuesta aceptada
  Walter Roberson
      
      
 el 25 de Mayo de 2017
        You have not indicated what format C:/Users/abc/Documents/MATLAB/features/0021.res5b is in.
I can tell from the first situation that the first thing in the file is being interpreted as numeric 0. char() of numeric 0 is called "the null character" and it is not permitted in file names.
In the second situation, the problem is that it is not permitted to importdata() a directory name.
I suggest changing the importdata to
   dir_list = regexp( fileread( output_list_relative ), '\r?\n', 'split');
   dir_list( cellfun( @isempty, dir_list ) ) = [];       %remove empty lines
8 comentarios
  Walter Roberson
      
      
 el 25 de Mayo de 2017
				      function []= read_c3d_feat(dir_str)
        feat_files = dir( fullfile(dir_str, '*.res5b') );
        num_feat = length(feat_files);
        feat = zeros(num_feat, dim_feat);
        for j = 1 : num_feat
            feat_path = fullfile(dir_str, feat_files(j).name);
            [~, feat(j,:)] = read_binary_blob(feat_path);
        end
        avg_feat = mean(feat, 1);
        avg_feat_double = double(avg_feat);
        fID = fopen( fullfile(dir_str, 'c3d.res5b'), 'w');
        % libsvm requires that input data must be double
        fwrite(fID, avg_feat_double, 'double');
        fclose(fID);
    end
I would point out, however, that you are reading all of the *.res5b files in the directory and producing a *.res5b file in the same directory as output. That implies that if you were to run the code again on the same directory, that the c3d.res5b that you created last time would be read as input. Are you sure you want to write the output into the same directory, or are you should that you want it to be a .res5b file, or are you sure you do not want to ignore c3d.res5b when looking calculating the features ?
Más respuestas (0)
Ver también
Categorías
				Más información sobre File Operations en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


