Hi there, I have a function that selects information from two files and combines this information into one new file. Importantly, I only want certain rows from file 2 to be included in the new document, namely rows for which the second column starts with 'S1' (followed by 2 other random numbers, eg: S124, S132, S112 etc.). Below is my code. I don't get an error message, however, it also does not give me the file I want. It prints only the header of the new file, but not the newly compiled lines. What am I doing wrong?
function []=CreateNewMarkersEEGlab(pNumber) dataFileName=strcat(int2str(pNumber),'_logfile.txt'); fid = fopen(dataFileName); C = textscan(fid, '%s%s%s%s%s%s%s%s%s%s%s%s%s%s', ... 'headerlines', 1);%14 columns
rScore=C{12}; sNumber=C{5}; cNumber=C{6}; subNumber=C{7}; tcode=C{10}; fclose(fid); % compute the new marker
for i=1:156 if strcmp(rScore{i}, '1') respMarker='corrresp'; else respMarker='incorrresp'; end if strcmp(tcode{i},'1') corrMarker='corr'; else corrMarker='incorr'; end newMarker{i} = sprintf('S1_con%s_sub%s_%s_%s_Snr_%s', ... cNumber{i}, subNumber{i}, corrMarker, ... respMarker, sNumber{i}); end % read the old marker file
dataFileName=strcat('EEG_Anne_',int2str(pNumber),'.vmrk'); fid = fopen(dataFileName); headline1=fgets(fid); headline2=fgets(fid); headline3=fgets(fid); ... headline13=fgets(fid); C = textscan(fid, '%s%s%d%d%d','Delimiter',','); Type=C{1}; Stimulus=C{2}; Position=C{3}; Length=C{4}; Channel=C{5}; fclose(fid); % rewrite the new marker file
outFileName=strcat('EEG_Anne_',int2str(pNumber),'_new.vmrk'); fid = fopen(outFileName,'w+'); fprintf(fid,headline1); fprintf(fid,headline2); fprintf(fid,headline3); ... fprintf(fid,headline13); for i=1:156 if strcmp(Stimulus,'S1\d*') fprintf(fid, '%s,%s,%d,%d,%d\r\n', ... Type{i}, newMarker{i}, Position(i), Length(i), Channel(i)); end end fclose(fid);
Best Answer