MATLAB: Arrangement problem with writing cellArray to txt file.

cell arraysfprintftxt

[fileName, filePath] = uiputfile('*.txt', 'Create a file:')
if ~ischar(fileName)
return;
end
fileID = fopen(fullfile(filePath, fileName), 'w');
coordinates=[32.56744567,33.54543333;32.55546543,33.77786567;32.66874567,33.44843753];
coordinates=num2cell(coordinates);
ids=[{'a'};{'b1'};{'3'}];
cellArray=[ids,coordinates];
for k=1:size(cellArray,1)
for m=1:size(cellArray,2)
% get the data type of the element in the cell array
dataType = class(cellArray{k,m});
% element data type determines how we write it to file
if strcmpi(dataType,'char')
fprintf(fileID,'%s\t',cellArray{k,m});
elseif strcmpi(dataType,'double')
fprintf(fileID,'%.10f\t',cellArray{k,m});
% etc. for each data type in the cell array
end
end
fprintf(fileID,'\n');
end
fclose(fileID);
%I need to write cellArray into txt file as it look below;
a 32.56744567 33.54543333
b1 32.55546543 33.77786567
3 32.66874567 33.44843753
%my codes writes it horizontally.

Best Answer

  • >> [nr nc]=size(cellArray);
    >> fmt=['%5s' repmat('%8.3f',1,nc) '\n'];
    >> for i=1:nr
    fprintf(fmt,cellArray{i,1},[cellArray{i,2:end}]),end
    a 32.567 33.545
    b1 32.555 33.778
    3 32.669 33.448
    >>