b@0: function tstDat=readMultiComp(testFile) b@0: b@0: % multiple comparison 1D specifications b@0: % b@0: % NAME: b@0: % multicomp test #1 b@0: % b@0: % nbSCALES: 1 b@0: % nbSOUNDS: 3 b@0: % b@0: % COMBINATIONS b@0: % 1 (random position) b@0: % 2 reference position 1 b@0: % 3 position 3 b@0: % b@0: % SCALES b@0: % b@0: % SCALE: b@0: % 1st scale b@0: % MIN: 0 no amount b@0: % MAX: 10 max amount b@0: % STEP: 1 in between b@0: % b@0: % COMMENTS? 1 % ask if a comment field should be displayed (1=yes 0=no) b@0: b@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% b@0: % b@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% b@0: b@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% b@0: %Initialization b@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% b@0: b@0: tstDat.sndRef=[]; b@0: tstDat.posComb=[]; b@0: b@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% b@0: % file parsing b@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% b@0: b@0: fid=fopen(testFile,'r'); b@0: while ~feof(fid) b@0: lin=fgetl(fid); b@0: b@0: [word1,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin,'%s',1); b@0: b@0: if (~COUNT | ~strcmp(word1,'%')) b@0: switch upper(word1) b@0: case 'NAME' b@0: tstDat.name=fgetl(fid); b@0: b@0: case 'NBSOUNDS:' b@0: [nbComb,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin(NEXTINDEX:end),'%d',1); b@0: tstDat.nbComb=nbComb; b@0: b@0: case 'NBSCALES:' b@0: [nbScale,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin(NEXTINDEX:end),'%d',1); b@0: tstDat.nbScale=nbScale; b@0: b@0: case 'COMBINATIONS' b@0: for noComb=1:nbComb b@0: lin=fgetl(fid); b@0: if ~isempty(lin) b@0: if lin(1)~='%' b@0: [comb,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin,'%d',1); b@0: tstDat.comb(noComb,:)=comb; b@0: % Read the reference DATA b@0: lin=lin(NEXTINDEX:end); b@0: [stri,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin,'%s',1); b@0: if findstr(lower(stri),'ref') b@0: tstDat.sndRef(end+1)=comb(1); b@0: lin=lin(NEXTINDEX:end); b@0: [stri,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin,'%s',1); b@0: end b@0: % read the sounds default position b@0: if findstr(lower(stri),'pos') b@0: lin=lin(NEXTINDEX:end); b@0: end b@0: [posComb,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin,'%f',inf); b@0: if ~isempty(posComb) % if it IS empty: set randomly! b@0: tstDat.posComb(noComb,:)=posComb; b@0: else b@0: tstDat.posComb(noComb,:)=100*rand(1, tstDat.nbScale); % added by Brecht to allow for random placing b@0: b@0: end b@0: end b@0: end b@0: end b@0: %eol(fid); %BDM??? b@0: case 'SCALES' b@0: % check posRef length b@0: nbRef=length(tstDat.sndRef); b@0: for noRef=1:nbRef b@0: if (length(tstDat.posComb(tstDat.sndRef(noRef),:))~=nbScale) b@0: fprintf(1,'Watch out, the position of reference %d are not specified for all scale',noRef); b@0: end b@0: end b@0: for noScale=1:nbScale b@0: b@0: while ~feof(fid) b@0: lin=fgetl(fid); b@0: [header,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin,'%s',1); b@0: switch firstWord(header) b@0: case 'SCALE:' b@0: name=fgetl(fid); b@0: case 'min' b@0: lin=lin(NEXTINDEX:end); b@0: [minn,COUNT,ERRMSG,NEXTINDEX]=sscanf(lin,'%d',1); %% b@0: level{1}=lin(NEXTINDEX:end); %% b@0: case 'max' b@0: lin=lin(NEXTINDEX:end); b@0: [maxx,COUNT,ERRMSG,NEXTINDEX]=sscanf(lin,'%d',1); %% b@0: level{3}=lin(NEXTINDEX:end); %% b@0: case 'step' b@0: lin=lin(NEXTINDEX:end); b@0: [stepp,COUNT,ERRMSG,NEXTINDEX]=sscanf(lin,'%d',1); %% b@0: level{2}=lin(NEXTINDEX:end); %% b@0: break b@0: end b@0: b@0: end b@0: tstDat.scale(noScale).name=name; b@0: tstDat.scale(noScale).maxx=maxx; b@0: tstDat.scale(noScale).minn=minn; b@0: tstDat.scale(noScale).stepp=stepp; b@0: tstDat.scale(noScale).level=level; b@0: end b@0: case 'COMMENTS?:' b@0: [COM,COUNT,ERRMSG,NEXTINDEX] = sscanf(lin(NEXTINDEX:end),'%d',1); b@0: tstDat.COM=COM; b@0: end b@0: end b@0: end b@0: b@0: fclose(fid); b@0: b@0: b@0: function word=firstWord(word) b@0: b@0: if ~isempty(word) b@0: if word(1)=='%' b@0: word=''; b@0: end b@0: else b@0: word=''; b@0: end