ssa

Форк
0
/
periodogram_test.go 
71 строка · 2.8 Кб
1
package periodogram_test
2

3
import (
4
	"fmt"
5
	"math"
6
	"strconv"
7
	"testing"
8

9
	"github.com/RB-PRO/ssa/pkg/periodogram"
10
	"github.com/xuri/excelize/v2"
11
)
12

13
func Test1Periodogram_32(t *testing.T) {
14
	fmt.Println("--- Periodogram: Test 1 ---")
15
	N := 32                      // к-во отсчётов
16
	x32, w32, rez32 := Data32(N) // Загружаем данные для длины окна 32
17

18
	priodogman32 := periodogram.Periodogram(x32, w32, N) // Расчёт периодограммы
19

20
	var ErrorCount int
21

22
	// Циклом идём по всему массиву и сравниваем данные
23
	for index := range priodogman32 {
24
		if int(math.Abs(100000*(priodogman32[index]-rez32[index]))) > 3 {
25
			ErrorCount++
26
			// t.Errorf("Blackmanharris: Элемент с индексом %v не соответствует рассчитанному. Должно было быть %v, а получено %v.",index, rez32[index], priodogman32[index])
27
		}
28
	}
29
	safeToXlsx(priodogman32)
30
	// Если к-во ошибок не равно нулю
31
	if ErrorCount != 0 {
32
		t.Errorf("Blackmanharris: Test1: Расхождений между результатами MatLab и полученными результатами - " + strconv.Itoa(ErrorCount) + " из " + strconv.Itoa(N))
33
	}
34
}
35

36
func Test1Periodogram_1024(t *testing.T) {
37
	fmt.Println("--- Periodogram: Test 2 ---")
38
	N := 1024                            // к-во отсчётов
39
	x1024, w1024, rez1024 := Data1024(N) // Загружаем данные для длины окна 1024
40

41
	priodogman1024 := periodogram.Periodogram(x1024, w1024, N) // Расчёт периодограммы
42

43
	var ErrorCount int
44

45
	// Циклом идём по всему массиву и сравниваем данные
46
	for index := range priodogman1024 {
47
		if int(math.Abs(10*(priodogman1024[index]-rez1024[index]))) > 3 {
48
			ErrorCount++
49
			//t.Errorf("Blackmanharris: Элемент с индексом %v не соответствует рассчитанному. Должно было быть %v, а получено %v.", index, rez1024[index], priodogman1024[index])
50
		}
51
	}
52
	safeToXlsx(priodogman1024)
53
	// Если к-во ошибок не равно нулю
54
	if ErrorCount != 0 {
55
		t.Errorf("Blackmanharris: Test1: Расхождений между результатами MatLab и полученными результатами - " + strconv.Itoa(ErrorCount) + " из " + strconv.Itoa(N))
56
	}
57
}
58

59
// Сохранить в xlsx для дебага
60
func safeToXlsx(x []float64) {
61
	file_graph := excelize.NewFile()
62
	file_graph.NewSheet("main")
63
	file_graph.DeleteSheet("Sheet1")
64
	lenFor := len(x)
65
	for ind := 0; ind < lenFor; ind++ {
66
		file_graph.SetCellValue("main", "A"+strconv.Itoa(ind+1), x[ind])
67
	}
68
	if err := file_graph.SaveAs("save_periodogram" + ".xlsx"); err != nil {
69
		fmt.Println(err)
70
	}
71
}
72

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

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

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

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