Hi, I am having difficulties with using fprintf to export numerical and string data to a *.txt file.
In my algorithm, I import in batch mode many *.txt files (tab delimited) including numbers, each file looking like the image below. The number of columns is always the same, but the number of rows vary each time and I have no info on this :
The problem with fprintf is that it prints columns as rows, while I needed it to keep the form of the above table. I managed to make it work with the code below, by concatenating all the numerical Result columns togeter into an array, which I then print as shown.
% Batch Processing all files
for j = 1:numel(txt_files) [PathName, filename, ext] = fileparts(char(txt_files(j).name)); %%Initialize variables.
filename = txt_files(j,1).name; delimiter = '\t'; startRow = 2; %%Format string for each line of text:
formatSpec = '%d%d%6.2f%6.2f%6.2f%[^\n\r]'; %%Open the text file.
fileID = fopen(filename,'r'); %%Read columns of data according to format string.
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter,... 'HeaderLines',startRow-1, 'ReturnOnError', false); %%Close the text file.
fclose(fileID);%%Allocate imported array to column variable names
Result01 = dataArray{:, 1}; Result02 = dataArray{:, 2}; Result03 = dataArray{:, 3}; Result04 = dataArray{:, 4}; Result05 = dataArray{:, 5}; %%Clear temporary variables
clearvars delimiter startRow formatSpec fileID dataArray ans; %%Create txt array with pathname, need as many rows as Result instances %(length(Result01))
SelectedName = repmat(char(filename), length(Result01), 1); %%Write results in file (append)
All_Results = cat(2, Result01, Result02, Result03, Result04, Result05); fprintf(fid_Destinfile, [repmat('%f\t', 1, size(All_Results, 2)) '\n'], All_Results'); end
My problem is that I need to add another column in each file iteration, which would include a string with the current pathname (This would be the same pathname for every row within the same file, I have created it here under the name SelectedName) So I would like the exported data to look as in the image below (again tab-delimited) and for each file iteration, to keep adding results in new rows.
I have tried converting all the data (numerical and strings) into strings,so that I could put everything together in a string array, but I could not print them as wanted. I also tried putting everything in a cell, but I could not manage to print from within the cell in the right order, as I couldn't find a way to make the last line of my code applicable for cells.
Any help would be greatly appreciated.
Thanks, ziggy
Best Answer