MATLAB Answers


what's the matter when i run a M.file?

Asked by Huadong Hu on 15 Apr 2019
Latest activity Commented on by Walter Roberson
on 15 Apr 2019
These below are part of the contents of the M.file i want to run.
clear all;
%% Step1: Decompress data.C.0/1/2/3---> to get white image data
fprintf('===============Step1: Unpack Lytro Files===============\n\n ');
These below are the results in the command.
===============Step1: Unpack Lytro Files===============
Searching for files [ data.C.0 ] in Sample_test
??? Error using ==> textscan
First input must be of type double.
Error in ==> LFToolbox0.4\LFFindFilesRecursive.m at 83
FolderList = textscan(FolderList, '%s', 'Delimiter', pathsep);
Error in ==> LFToolbox0.4\LFUtilUnpackLytroArchive.m at 44
[AllVolumes, BasePath] = LFFindFilesRecursive(InputPath, FirstVolumeFname);
Error in ==> Demo at 23


Sign in to comment.


2 Answers

Answer by TADA
on 15 Apr 2019

textscan accepts a file id not a file path. Use fopen first


In sufficiently new MATLAB textscan can accept a character vector as the first parameter and it uses the content of the character vector as input as if it had been read from a file. The people who wrote the code used that ability in order to split a file name at the directory delimiters or perhaps at a colon. The poster is using a version of MATLAB too old to support the feature.
on 15 Apr 2019
Oh.... I can't say much about older versions of Matlab....
@Huadong Hu, you can try using
FileList = regexp(FileList, pathsep, 'split');
FileList = strsplit(FileList, pathsep);
Hopefully that feature did exist back in 2004
strsplit() is r2013a .
regexp() should be there. However after you use regexp with 'split', it is a good idea to use
dirlist = regexp(FolderList, pathsep, 'split');
dirlist(cellfun(@isempty, dirlist)) = [];
FolderList = dirlist;
If Folderlist had happened to begin or end with pathsep or if there had been multiple pathsep in a row, then regexp split would have left an empty cell; the indexing and cellfun is there to delete those empty cells.

Sign in to comment.

Answer by Walter Roberson
on 15 Apr 2019

You are using MATLAB R14 from 2004 to attempt to run code that was written for R2014a. The code uses features that did not exist in your release.

  1 Comment

so install R2014a version?

Sign in to comment.