ssa

Форк
0
/
blackmanharris.go 
30 строк · 1.5 Кб
1
// # Окно Блэкмана-Хэрриса
2
// На вход получает N, расчёты ведёт до N-1
3
//
4
// Окно Блэкмана-Харриса (Blackman-Harris), как и окно Хэнинга,
5
// применяется для измерения очень слабых компонент на фоне большого входного сигнала, таких как нелинейные искажения
6
package blackmanharris
7

8
import "math"
9

10
// Расчёт окна для Блэкмана-Харриса (Blackman-Harris) при заданном N и массиве коэффициентах
11
//
12
// Входные данные:
13
//	-N - Длина окна
14
//	-a - Коэффтиенты Блэкмен-Харриса
15
//
16
// Пример:
17
// 	blackmanharris(32, blackmanharris.Koef4_92db)
18
func Blackmanharris(N int, a [4]float64) []float64 {
19
	Window := make([]float64, N-1) // Выходной массив окна
20
	Nfloat64 := float64(N)         // N в float64, чтобы не не переводить трижды
21
	for n := range Window {        // Цикл по всему окну
22
		nfloat64 := float64(n) // n в float64, чтобы не не переводить трижды
23

24
		// Уравнение для периодического окна Блэкмен-Харриса с четырьмя терминами длины N
25
		Window[n] = a[0] - a[1]*math.Cos((2.0*math.Pi/Nfloat64)*1*nfloat64) +
26
			a[2]*math.Cos((2.0*math.Pi/Nfloat64)*2*nfloat64) +
27
			a[3]*math.Cos((2.0*math.Pi/Nfloat64)*3*nfloat64)
28
	}
29
	return Window
30
}
31

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

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

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

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