% ----------------- % Copyright © 2022 ACK Cyfronet AGH, Poland. % ----------------- % % Get string format specification used for fpritf, based on numeric 'FieldType' (GDF) or 'type' (catalog) field % see https://docs.cyfronet.pl/display/ISEPOS/GDF+v2.2+-+description function lineFormat = getLineFormat(fieldTypes) lineFormat = ''; for f = 1:length(fieldTypes) fieldType = fieldTypes{f}; formatSpec = getFormatSpec(fieldType); lineFormat = [lineFormat ',' formatSpec]; end lineFormat = [lineFormat(2:end) '\n']; end function formatSpec = getFormatSpec(fieldType) if isTime(fieldType) formatSpec = '"%s"'; elseif isnumeric(fieldType) if fieldType < 10 formatSpec = getFormatSpecFromReservedFieldType(fieldType); elseif fieldType < 200 formatSpec = ['%.', num2str(mod(fieldType, 10)), 'f']; elseif fieldType < 300 formatSpec = ['%.', num2str(mod(fieldType, 10)), 'e']; else error(['Unrecognized fieldType: ', num2str(fieldType)]) end else error(['Unrecognized fieldType: ', num2str(fieldType)]) end end function formatSpec = getFormatSpecFromReservedFieldType(fieldType) switch fieldType case 1 formatSpec = '%f'; case 2 formatSpec = '%d'; case 3 formatSpec = '"%s"'; case 4 formatSpec = '%.1f'; case 5 formatSpec = '%s'; case 6 formatSpec = '%1.1e'; case 7 formatSpec = '%1.2e'; otherwise error(['Unrecognized fieldType: ', num2str(fieldType)]) end end