Csvgraph предназначен для быстрого просмотра графиков потенциально очень больших (ГБ) файлов CSV (для сравнения, большинство электронных таблиц ограничены 1 048 576 строками). Csvgraph не имеет встроенных ограничений, но в конечном итоге он ограничен доступной оперативной памятью (32-разрядная версия будет использовать до 4 ГБ ОЗУ, если она доступна, а 64-разрядная версия будет использовать всю доступную ОЗУ и виртуальную память). память). Даже очень большие файлы считываются быстро, а масштабирование обычно происходит мгновенно.
Предполагается, что эти файлы csv имеют заголовки столбцов в первой строке, поэтому начинается типичный файл csv:
«Время (сек)», «Кол-2», «Кол-3», «Кол-4», «Кол-5»
99950,20,0,20,20
99950.1,10,1,11,12
Значения считываются как числа с плавающей запятой, поэтому они ограничены числами в диапазоне +/-3,4e+38, а наименьшее ненулевое число составляет примерно 1,4e-45, примерно с 7 значащими цифрами.
Помимо простых графиков данных в файлах CSV, данные можно фильтровать различными способами (включая медианные фильтры, полиномиальные аппроксимации и БПФ), а также рассчитывать на основе данных CSV (например, абсолютную разницу между данными в 2 файлах). столбцы CSV-файла можно легко отобразить (например, «abs($3-$4)» будет отображать абсолютную разницу между столбцами 3 и 4).
Файл csvgraph.pdf содержит полное руководство и ряд примеров его использования.
1v0 — первый релиз на GitHub
1v1 — 01.06.2021 — исправлена потенциальная проблема с компонентом постоянного тока БПФ. Добавлено Меню/Помощь/Руководство. Обновленное руководство.
1v2 — 24.01.2021 — исправлена ошибка — «inf» в CSV-файле читалось как чрезвычайно большое число (бесконечность), что затем вызывало проблемы, когда csvgraph пытался масштабировать числа и рисовать график. Добавлено множество дополнительных опций «фильтрации», включая экспоненциальную, степенную, гиперболическую и кварт.
1v3 – 02.03.2021 — добавлены дополнительные параметры подгонки кривой: y=mx, y=mx+c с GMR , минимальная абсолютная ошибка и минимальная относительная ошибка, а также y=a x+b sqrt(x)+c.
2v0 — 17.02.2021 — Основные внутренние изменения, направленные на уменьшение использования оперативной памяти и повышение скорости. Никаких изменений в работе.
2v1 — 21.03.2021 — добавлено больше вариантов подгонки кривой; y=a+b sqrt(x)+c x+d*x^1,5, y=(a+bx)/(1+cx), y=(a+bx+cx^2)/(1+dx+ ex^2), полиномы от sqrt(x) пользовательского порядка и рациональные функции (полиномиальные/полиномиальные) в определенном пользователем порядке.
2v2 — 04.05.2021 — от $T1 до Tn разрешено в выражениях использовать значения из существующих трасс на графике. Трассировки нумеруются с 1. Неверные номера трассировок (слишком большие) возвращают 0. Теперь пользователь может установить порядок линейного фильтра. Это реализовано как фильтр Баттерворта n-го порядка (10*порядок дБ/декада). Order=0 не дает фильтрации. Order =1 обеспечивает ту же фильтрацию, что и раньше. Добавлены «фильтры» для целых и производных. Все фильтры теперь сообщают о прогрессе в % (ранее минимальная ошибка абс и минимальная относительная ошибка не сообщали о прогрессе и могли быть довольно медленными). Возможность пропускать N строк перед добавлением заголовка CSV для случаев, когда заголовок CSV не находится в первой строке файла. Добавлены номера столбцов в списки столбцов X и Y, чтобы упростить выбор столбцов, когда имена не очень информативны (или отсутствуют). ).
2v3 — 23 января 2022 г. добавлена аппроксимация кривой y=m x log(x)+c. Функции сортировки и медианы улучшены, чтобы сделать их быстрее: сортировка будет использовать все доступные процессоры для повышения скорости выполнения.
2v4 — исправлена ошибка от 3 февраля 2022 г., связанная с использованием переменных $Tn в выражении с набором значений оси X, которые были
не в порядке возрастания чисел (поэтому их нужно было отсортировать) не работало правильно в 2х2 и 2х3 — извините.
2v5 — 16 февраля 2022 г. Улучшена отчетность о недопустимых строках в файлах csv. При чтении времени начало с нулевого времени сделано необязательным.
2v6 – 27.02.2022 – Улучшен фильтр Median1: теперь он точен для <= 10 000 точек данных и (намного) больше для точных трассировок с большим количеством точек данных. Положение легенд трассировки смещено влево, чтобы можно было видеть больше текста.
2v7 — 22.03.2022 — печатает частоту -3 дБ для линейного фильтра. Отображение пользователю 1 примера каждого типа ошибки в файле csv. Если в некоторых строках файла CSV присутствуют даты, пометьте строки без даты как потенциальную ошибку, если в столбце x установлено значение времени. Новый (точный) алгоритм медианы (рекурсивный медианный фильтр), который возвращается к выборке, если время выполнения становится большим. Медиана и Медиана 1 переименованы в рекурсивный медианный фильтр и стандартный медианный фильтр.
2v8 — 23.05.2022 — добавлена возможность считывать дату и время как значение x. В csvsave добавлен % завершения и (значительно) ускорена запись в файл. csvsave при необходимости выполняет интерполяцию, поэтому значения x не обязательно должны быть одинаковыми на всех трассах.
2v9 — 06.07.2022 — исправлена ошибка — если смещение по оси X не равно 0 и добавлено несколько трасс, ко второй добавленной трассе было применено неправильное смещение по оси X. Более высокое внутреннее разрешение при считывании даты и времени, поэтому, если отмечено «время начала с нуля», результаты могут быть немного более точными.
3v0 — 15.08.22 — Никогда не выпускался — 1-я 64-битная версия
3х1 – 17.08.22 – Никогда не выпускался. Исходный код подвергся рефакторингу с выделением «общих файлов» (которые могут использоваться в других программах). Некоторые файлы были перемещены с C++ на C, где они представляли собой чистый C, и компилятор C++ выдавал множество предупреждений.
3v2 — 9.14.2022 — первый 64-битный релиз. 64-битная версия будет использовать всю доступную память, а 32-битная версия ограничена 4 ГБ оперативной памяти, при этом функциональность идентична. 64-битная версия может читать файлы длиной более 2^32 строк, а 32-битная версия исчерпает ОЗУ, прежде чем можно будет прочитать такое количество строк.
Незначительные изменения: если ранее меню «Масштаб» вызывалось несколько раз, масштабирование менялось очень незначительно — исправлено. Расширен допустимый диапазон размеров шрифта для основного заголовка и заголовков по осям X/Y. БПФ теперь использует несколько ядер процессора, если они имеются, для получения более быстрых результатов.
3v3 — 26.09.2022 — изменения в 64-битной версии, позволяющие загружать файлы еще большего размера (с использованием виртуальной памяти и оперативной памяти).
3v4 — 10.01.2022 — исправлена проблема с обработкой dpi при использовании нескольких мониторов в 64-разрядной версии.
3v5 – 11.06.2022 – при щелчке правой кнопкой мыши при выборе линии задается наклон этой линии (dy/dx), а также координаты обоих концов линии. Имя файла можно указать в командной строке (в более ранних версиях это не работало для 64-битной версии). Выражение, содержащее функцию, теперь разрешено для оси y (например, max($2,0) ).
3v6, 06.03.2023 – Длинные заголовки столбцов теперь приводят к автоматическому добавлению полосы прокрутки в списки X и Y, чтобы их можно было полностью видеть. Сохраните диапазон x на экране в виде CSV, добавленного в меню «Файл». Добавлена опция (флажок) для добавления базового имени имени файла в легенды трасс на графике, что полезно, если один и тот же столбец считывается из нескольких файлов. Название оси Y добавляется автоматически, если пользователь не укажет его (на основе заголовка столбца первой добавленной трассы). Добавлена возможность загрузки X как Value/60 (сек->мин), Val/3600 (сек->час), val/86400 (сек->дни). Улучшена обработка ошибок для значений X в определяемом пользователем формате даты/времени, и теперь разрешены конечные пробелы.
3v7 06.10.2023 — добавлена галочка «Показать легенды». Изменено использование компилятора Builder C++ 11.3. Заголовок теперь центрируется над графиком. Незначительные изменения размеров, шрифтов и т. д. в csvgraph.
3v8 07.04.2023 csvsave: во второй трассе было меньше точек, чем в первой, что приводило к ошибке — исправлено.
3в9 26.02.2024
Теперь можно открыть файл, который уже открыт в Excel (и сообщения об ошибках лучше отображаются при невозможности открытия файлов). Улучшено отслеживание нажатия пользователем кнопки «команда» во время выполнения предыдущей команды. Производная теперь использует 17-точечный алгоритм Савицкого Голея с заданным пользователем порядком (фактически используется 1->10, пользователь может установить 1->бесконечность). В качестве опции фильтрации добавлено сглаживание Савицкого Голея (25 точек, в заданном пользователем порядке, фактически используется 1->10, пользователь может установить 1->бесконечность). Добавлена вторая производная (d2y/d2x) в список фильтров, использующих 25-точечный алгоритм Савицкого Голея с заданным пользователем порядком (фактически используется 1->10, пользователь может установить 1->бесконечность). Если число отсутствует в столбце, указанном в выражении, ему будет присвоено значение nan. Добавлена константа «nan» для выражений. Если выражение оценивается как nan, строка пропускается, поэтому это может быть эффективным способом выбора точек для отображения csvgraph. В выражения добавлены «переменные» x и line. x — текущее значение x, а line — текущий номер строки. Обновлен обработчик выражений: nan==nan и nan!=nan работают в выражениях должным образом.
3v10 04.06.2024 Добавлен сглаживающий сплайновый фильтр.
4v0 07.03.2024 Csvgraph теперь работает с текстом в Юникоде (uft-8), поэтому можно использовать любые символы. Это означает, что CSV-файл в кодировке uft-8 будет правильно прочитан, а его спецификация (метка порядка байтов), если она присутствует, будет правильно обработана. Заголовки столбцов, основные заголовки и названия осей могут включать символы utf8. Utf-8 обратно совместим с 7-битным ASCII, поэтому «обычные» файлы CSV должны обрабатываться точно так же, как и раньше. При сохранении файла CSV у вас есть возможность указать, что файл создается с использованием спецификации. Имена файлов и пути к файлам также могут содержать символы Юникода (utf-8). Обратите внимание, что при сохранении файла CSV в последних версиях Excel создается файл CSV в формате utf-8 со спецификацией, а спецификация требуется для Excel, чтобы распознать файл CSV, если вы попытаетесь его открыть. Другие изменения: • Изображения экрана можно сохранять в форматах BMP, jpg, png, gif, tiff и wdg. • ? оператор можно свободно использовать в выражениях, например ($1==0?0:1) теперь считается допустимым выражением (ранее он работал только с удаленными скобками) • для регрессии в полиномах sqrt(x) точки с отрицательными значениями x теперь игнорируются. • Разрешен X, а также x в выражениях (полезно, поскольку при вырезании и вставке уравнений [например, при аппроксимации кривой] может использоваться X)
Cvsgraph — портативная программа, не требующая установки.
Скопируйте файл csvgraph32.exe или csvgraph64.exe в любое место на вашем компьютере (или запустите его с USB-накопителя или аналогичного устройства). Добавьте файл csvgraph.pdf в тот же каталог, чтобы обеспечить доступ к руководству из csvgraph (меню help/manual).
Ярлык на рабочем столе упрощает выполнение csvgraph.
Подробности смотрите в файле ЛИЦЕНЗИЯ, но csvgraph бесплатен как для коммерческого, так и для некоммерческого использования.
csvgraph работает в Windows (10 32- или 64-разрядная версия). Он должен работать в более ранних версиях (до Vista) или под Wine в Linux, но это не проверено.
Начиная с версии 3v7, исходный код был скомпилирован с помощью Embarcadero® C++Builder 11.3 — подходящий файл проекта включен в архив. Он должен скомпилироваться без ошибок и предупреждений. Перейти на более позднюю версию C++Builder должно быть легко (по крайней мере, для 32/64-разрядной версии Windows), но в равной степени не составит большого труда вернуться к более ранним версиям (обратно к Builder C++ V5), если необходимый.
Многие части исходного кода могут представлять интерес, если вы не используете C++Builder — например, atof.c является частью ya-sprintf, см. https://github.com/pj-miller/ya-sprintf.
expr-code.c содержит множество подпрограмм, которые обычно полезны, включая быстрый общий оценщик выражений для выражений, хранящихся в строках.
UScientificGraph.cpp содержит эффективную реализацию медианного фильтра и реализацию полиномиальной аппроксимации, которые хорошо работают с очень большим количеством точек данных, и их реализации считаются новыми. Он также содержит алгоритм быстрого обрезки линий, который позволяет «бесконечно» увеличивать/уменьшать масштаб.