ssa
1// Тестирование функции Pchip
2// PCHIP - Кусочный кубический интерполяционный полином Эрмита
3// Результаты работы сохраняются в файл pchip_test.xlsx на лист golang
4// Данные результаты необходимо сравнить с данными MatLab на листе MatLab
5
6package pchip_test7
8import (9"fmt"10"math"11"strconv"12"testing"13
14"github.com/RB-PRO/ssa/pkg/pchip"15"github.com/xuri/excelize/v2"16)
17
18func TestPchip2(t *testing.T) {19// Согрузка входных данных20win := 102421lag := int(math.Floor(float64(win) / 10.0))22lgl := make([]float64, lag)23for m := 0; m < len(lgl); m++ {24lgl[m] = float64(m + 1)25}26PhaAcfNrm := loadXlsx("pchip_test.xlsx")27
28// Использование функции29coefC := pchip.Pchip2(lgl, PhaAcfNrm)30fmt.Println("Len", coefC)31
32safeToXlsx2(coefC)33}
34
35// Сохранить в xlsx для дебага
36func safeToXlsx2(coefs []float64) {37file_graph, _ := excelize.OpenFile("pchip_test.xlsx", excelize.Options{})38defer file_graph.Close()39lenFor := len(coefs)40for ind := 0; ind < lenFor; ind++ {41//file_graph.SetCellValue("golang2", "B"+strconv.Itoa(ind+1), coefs.A[ind])42//file_graph.SetCellValue("golang2", "C"+strconv.Itoa(ind+1), coefs.B[ind])43file_graph.SetCellValue("golang2", "D"+strconv.Itoa(ind+1), coefs[ind])44//file_graph.SetCellValue("golang2", "E"+strconv.Itoa(ind+1), coefs.D[ind])45}46file_graph.Save()47}
48