У меня есть большие матрицы данных, которые выглядят примерно так:
DataOut' = [34 1 0.0 -4.75343000000000 0.0291776000000000 5.32835000000000 1.23598000000000 0.890008000000000;
7 1 0.0902364000000000 -4.74065000000000 0.0 1.97133000000000 9.49706000000000 16.1658000000000]
Первые два столбца — это идентификаторы и всегда целые числа, а остальные 6 столбцов — это 2 пары координат (X, Y, Z) (плавающие числа) для каждого соответствующего идентификатора.
Я пишу данные в файл, используя следующий синтаксис:
fprintf(' %u %u %-6.12g %-6.12g %-6.12g %-6.12g %-6.12g %-6.12g \r\n', DataOut)
>> 34 1 0 -4.75343 0.0291776 5.32835 1.23598 0.890008
7 1 0.0902364 -4.74065 0 1.97133 9.49706 16.1658
Этот формат удобен почти во всех случаях, кроме одного, выделенного выше, где незначащие конечные нули заменяются пробелами, что приводит к большому разрыву между некоторыми столбцами вместо одного пробела. Программное обеспечение, читающее эти данные, действительно не любит все эти пробелы и ломается, когда находит больше, чем ожидалось.
Мой желаемый результат - иметь только один пробел между каждым столбцом:
>> 34 1 0 -4.75343 0.0291776 5.32835 1.23598 0.890008
7 1 0.0902364 -4.74065 0 1.97133 9.49706 16.1658
Кто-нибудь знает, как заставить fprintf просто оставить один пробел после удаления незначащих конечных нулей? Использование fprintf приятно, потому что мне не нужны никакие циклы, и когда у вас есть несколько тысяч этих матриц, которые нужно записать, я думаю, что это было бы довольно медленно, если бы мне пришлось выполнять некоторую проверку в цикле?