Csvgraph 旨在允許快速查看可能非常大 (GB) 的 csv 檔案的圖表(為了進行比較,大多數電子表格僅限於 1,048,576 行)。 Csvgraph 沒有內建限制,但最終受到可用 RAM 的限制(32 位元版本將使用最多 4GB RAM(如果可用),而 64 位元版本將使用所有可用 RAM 和虛擬記憶體記憶)。即使檔案非常大,讀取速度也很快,而且縮放通常是瞬時的。
假定這些 csv 檔案的第一行有列標題,因此典型的 csv 檔案會開始:
“時間(秒)”,“Col-2”,“Col-3”,“Col-4”,“Col-5”
99950,20,0,20,20
99950.1,10,1,11,12
數值被讀取為浮點數,因此僅限於 +/-3.4e+38 之間的數字,最小的非零數字約為 1.4e-45,具有大約 7 個有效數字。
除了csv 檔案中的資料的簡單繪圖之外,還可以透過多種不同的方式對資料進行過濾(包括中值濾波器、多項式擬合和FFT),並根據csv 資料進行計算(例如2 中資料之間的絕對差值)。
文件 csvgraph.pdf 包含完整的手冊和一些使用範例。
1v0 - 第 1 個 github 版本
1v1 - 6/1/2021 - 修正了 FFT 直流分量的潛在問題。新增了菜單/幫助/手冊。更新了手冊。
1v2 – 24/1/2021 – 錯誤修復 – csv 檔案中的「inf」將被讀取為一個極大的數字(無限大),這會在 csvgraph 嘗試縮放數字並繪製圖表時導致問題。增加了更多“過濾”選項,包括指數、冪、雙曲和開方。
1v3 – 3/2/2021 - 增加了更多曲線擬合選項,y=mx、y=mx+c 與 GMR、最小絕對誤差和最小相對誤差,以及 y=a x+b sqrt(x)+c 。
2v0 – 17/2/2021 – 進行了重大內部更改,以減少 RAM 使用並提高速度。功能無變化。
2v1 – 21/3/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 - 5/4/2021 - $T1 到 Tn 允許在表達式中使用圖表上現有軌蹟的值。跡線從 1 開始編號。這是作為 n 階巴特沃斯濾波器(10*階 dB/十倍頻)實現的。 Order=0 不進行過濾。 Order =1 提供與先前相同的過濾。新增了積分和導數的「過濾器」。現在,所有過濾器都以百分比形式報告進度(以前的最小絕對誤差和最小相對誤差不報告進度,而且速度可能相當慢)。針對csv 標題不在文件第一行的情況,添加了在csv 標題之前跳過N 行的選項將列編號添加到X 列和Y 列列錶框,以便在名稱描述性不強(或缺失)時更輕鬆地選擇列)。
2v3 - 2022 年 1 月 23 日新增了 y=m x log(x)+c 曲線擬合。排序和中位數函數得到改進,使其速度更快 - 排序將使用所有可用的處理器來提高其執行速度。
2v4 - 2022 年 2 月 2 日錯誤修復,在表達式中使用變數 $Tn 以及一組 x 軸值
不是按數字遞增順序(因此需要排序)在 2v2 和 2v3 中無法正常工作 - 抱歉。
2v5 - 16-2-2022 更好地報告 csv 檔案中的無效行。讀取時間時,可選擇從零時間開始。
2v6 – 27/2/2022 – Median1 過濾器得到改進,對於 <=10,000 個數據點,它現在是準確的,並且對於具有大量數據點的準確追蹤來說,它(更多)更加準確。跡線圖例的位置向左移動,以便可以看到更多文字。
2v7 – 22/3/2022 - 列印線性濾波器的 -3dB 頻率。向使用者 1 顯示 csv 檔案中每種錯誤類型的範例。如果 csv 檔案的某些行中存在日期,則當 x 列設定為時間時,會將沒有日期的行標記為潛在錯誤。新的(精確)中值(遞歸中值濾波器)演算法,如果執行時間變長,則會回退到取樣。 Median 和 Median 1 更名為遞歸中值濾波器和標準中值濾波器。
2v8 - 23/5/2022 – 增加了讀取日期和時間的能力,因為 x 值 csvsave 增加了完成百分比並(顯著)加快了寫入檔案的速度。如果需要,csvsave 會進行內插,因此所有軌跡上的 x 值不需要相同。
2v9 – 2022 年 7 月 6 日 – 錯誤修復 – 如果 x 偏移量不等於 0 且新增的多條軌跡,則錯誤的 x 偏移量將應用於隨後新增的第二條軌跡。讀取日期和時間的內部解析度更高,因此如果勾選“從零開始時間”,結果可能會稍微更準確。
3v0 – 15/8/22 - 從未發布 - 第一個 64 位元版本
3v1 – 17/8/22 - 從未發布。重構的原始程式碼與“公共文件”(可能在其他程式中使用)分開。有些檔案從 C++ 轉移到 C,其中它們是純 C,而 C++ 編譯器產生了許多警告。
3v2 – 2022 年 9 月 14 日 – 第一個 64 位元版本。 64 位元版本將使用所有可用內存,而 32 位元版本僅限 4GB 內存,除此之外功能相同。 64 位元版本可以讀取超過 2^32 行的文件,32 位元版本將在讀取這麼多行之前耗盡 RAM。
細微變化:當先前多次呼叫“縮放”選單時,縮放會發生非常輕微的變化 - 已修復。擴大了主標題和 X/Y 軸標題允許的字體大小範圍。 FFT 現在利用多個處理器核心(如果存在)來提供更快的結果。
3v3 - 26/9/2022 - 更改為 64 位元版本以允許載入更大的檔案(使用虛擬記憶體和 RAM)
3v4 - 1-10-2022 - 修正了在 64 位元版本上使用多個顯示器時的 dpi 處理問題。
3v5 – 6/11/2022 – 選擇一條線時按滑鼠右鍵,即可給出該線的斜率 (dy/dx) 以及該線兩端的座標。可以在命令列上給出檔案名稱(在早期版本中,這不適用於 64 位元版本)。現在,y 軸允許使用包含函數的表達式(例如 max($2,0) )。
3v6 3/6/2023 – 長列標題現在會導致捲軸自動新增到 X 和 Y 列錶框,以便可以完全看到它們。將螢幕上的 x 範圍儲存為 CSV 新增至「檔案」選單。新增了選項(複選框)以將檔案名稱的基本名稱新增至圖形上的跡線圖例中,如果從多個檔案讀取同一列,則該選項非常有用。除非使用者指定,否則自動新增 Y 軸標題(基於新增的第一條跡線的列標題)。新增了將 X 載入為 Value/60(秒->分鐘)、Val/3600(秒->小時)、val/86400(秒->天)的選項。改進了使用者定義的日期/時間格式中 X 值的錯誤處理,現在允許尾隨空格。
3v7 10/6/2023 – 新增了「顯示圖例」複選框。變更為使用 Builder C++ 11.3 編譯器。標題現在位於圖表上方的中心。對 csvgraph 中的大小、字體等進行了細微更改。
3v8 4/7/2023 csvsave 其中第二條軌跡的點少於第一條軌跡導致錯誤 - 已修復。
3v9 2024年2月26日
現在可以開啟 Excel 已開啟的文件(如果無法開啟文件,錯誤訊息會更好)。更好地捕獲用戶在上一個命令仍在運行時按下“命令”按鈕。 Derivative現在使用使用者指定階數的17點Savitzky Golay演算法(實際使用1->10,可以由使用者設定1->無限大)。新增 Savitzky Golay 平滑作為過濾選項(25 個點,使用者指定順序,實際使用 1->10,可以由使用者設定 1->無限大)。在濾波器清單中新增了二階導數 (d2y/d2x),該濾波器使用具有使用者指定階數的 25 點 Savitzky Golay 演算法(實際使用 1->10,可由使用者設定 1->無限大)。如果表達式中引用的列中缺少數字,則該數字將設為 nan。為表達式加入了常數“nan”。如果表達式的計算結果為 nan,則該行將被跳過,因此這可能是選擇要顯示的 csvgraph 點的有效方法。將“變數”x 和 line 加到表達式中。 x 是目前 x 值,line 是目前行號。更新了表達式處理程序,以便 nan==nan 和 nan!=nan 在表達式中按預期工作。
3v10 6/4/2024 新增平滑樣條過濾器。
4v0 3/7/2024 Csvgraph 現在可以使用 Unicode 文字 (uft-8),因此可以使用任何字元。這意味著將正確讀取 uft-8 編碼的 csv 文件,並正確處理其 BOM(位元組順序標記)(如果存在)。列標題、主標題和軸標題都可以包含 utf8 字元。 Utf-8 向後相容於 7 位元 ASCII,因此「傳統」csv 檔案應按照先前的方式進行處理。儲存 csv 檔案時,您可以選擇指定使用 BOM 建立檔案。檔案名稱和檔案路徑也可能包含 Unicode 字元 (utf-8)。請注意,使用最新版本的 Excel 儲存 CSV 文件會建立一個帶有 BOM 的 utf-8 格式 csv 文件,如果您嘗試開啟該 csv 文件,Excel 需要 BOM 才能識別該文件。其他變更: • 螢幕影像可以儲存為 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 存取手冊(選單說明/手冊)。
桌面上的捷徑讓執行 csvgraph 變得簡單。
有關詳細信息,請參閱文件 LICENSE,但 csvgraph 對於商業和非商業用途都是免費的。
csvgraph 在 Windows(10 32 或 64 位元)上運作。它應該可以在早期版本(Vista 之前)或 Linux 上的 Wine 下運行,但這尚未經過測試。
從 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 包含一個高效的中值濾波器實現和一個多項式擬合實現,兩者都可以很好地處理大量數據點,並且這些實現被認為是新穎的。它還包含快速線裁剪演算法,允許“無限”放大/縮小。