ssa

Форк
0
/
CubPchip_test.go 
70 строк · 2.0 Кб
1
// Тестирование функции Pchip
2
//	PCHIP - Кусочный кубический интерполяционный полином Эрмита
3
// Результаты работы сохраняются в файл pchip_test.xlsx на лист golang
4
// Данные результаты необходимо сравнить с данными MatLab на листе MatLab
5

6
package pchip_test
7

8
import (
9
	"math"
10
	"strconv"
11
	"testing"
12

13
	"github.com/RB-PRO/ssa/pkg/pchip"
14
	"github.com/xuri/excelize/v2"
15
)
16

17
func TestPchip(t *testing.T) {
18
	// Согрузка входных данных
19
	win := 1024
20
	lag := int(math.Floor(float64(win) / 10.0))
21
	lgl := make([]float64, lag)
22
	for m := 0; m < len(lgl); m++ {
23
		lgl[m] = float64(m + 1)
24
	}
25
	PhaAcfNrm := loadXlsx("pchip_test.xlsx")
26

27
	// Использование функции
28
	_, _, coefs := pchip.Pchip(PhaAcfNrm,
29
		lgl,
30
		lgl,
31
		len(PhaAcfNrm), len(lgl))
32

33
	safeToXlsx(coefs)
34
}
35

36
// Сохранить в xlsx для дебага
37
func safeToXlsx(coefs pchip.PchipCoefs) {
38
	file_graph, _ := excelize.OpenFile("pchip_test.xlsx", excelize.Options{})
39
	defer file_graph.Close()
40
	lenFor := len(coefs.A)
41
	for ind := 0; ind < lenFor; ind++ {
42
		file_graph.SetCellValue("golang", "B"+strconv.Itoa(ind+1), coefs.A[ind])
43
		file_graph.SetCellValue("golang", "C"+strconv.Itoa(ind+1), coefs.B[ind])
44
		file_graph.SetCellValue("golang", "D"+strconv.Itoa(ind+1), coefs.C[ind])
45
		file_graph.SetCellValue("golang", "E"+strconv.Itoa(ind+1), coefs.D[ind])
46
	}
47
	file_graph.Save()
48
}
49

50
// Получить входной сигнал из файла xlsx
51
func loadXlsx(filename string) []float64 {
52
	output := make([]float64, 0)
53

54
	file_graph, _ := excelize.OpenFile(filename, excelize.Options{})
55
	defer file_graph.Close()
56

57
	rows, err := file_graph.GetRows("input")
58
	if err != nil {
59
		return nil
60
	}
61

62
	for _, row := range rows {
63
		//fmt.Println(row[0])
64
		n, err := strconv.ParseFloat(row[0], 64)
65
		if err == nil {
66
			output = append(output, n)
67
		}
68
	}
69
	return output
70
}
71

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.