mask_funk was updated
parent
9be2c7aef3
commit
1d0593f72c
32
mask_func.js
32
mask_func.js
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
export function spec_model(spec, tol) {
|
export function spec_model(spec, tol, color) {
|
||||||
let result = {}; //результат
|
let result = {}; //результат
|
||||||
let model = spec.base; //исходный массив точек для построения упрощенной модели спектра
|
let model = spec.base; //исходный массив точек для построения упрощенной модели спектра
|
||||||
let imin = 0; //левая граница коридора
|
let imin = 0; //левая граница коридора
|
||||||
|
@ -21,7 +21,7 @@ export function spec_model(spec, tol) {
|
||||||
//отрисовка графика на plot
|
//отрисовка графика на plot
|
||||||
gtl.plot.add(
|
gtl.plot.add(
|
||||||
{
|
{
|
||||||
color: 0x44944A,
|
color: color,
|
||||||
name: result.name,
|
name: result.name,
|
||||||
x: result.resolution,
|
x: result.resolution,
|
||||||
y: model
|
y: model
|
||||||
|
@ -64,33 +64,45 @@ export function mask(obj) {
|
||||||
Y += (a[i] - a_avg) ** 2;
|
Y += (a[i] - a_avg) ** 2;
|
||||||
Z += (b[i] - b_avg) ** 2;
|
Z += (b[i] - b_avg) ** 2;
|
||||||
};
|
};
|
||||||
gtl.log.info("Корреляция гармоники:", X / (Math.sqrt(Y) * Math.sqrt(Z)));
|
//gtl.log.info("Корреляция гармоники:", X / (Math.sqrt(Y) * Math.sqrt(Z)));
|
||||||
return X / (Math.sqrt(Y) * Math.sqrt(Z));
|
return X / (Math.sqrt(Y) * Math.sqrt(Z));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let arr1 = [];
|
||||||
|
let arr2 = [];
|
||||||
switch (obj.type) {
|
switch (obj.type) {
|
||||||
case 0: //обычный ряд
|
case 0: //обычный ряд
|
||||||
for (let i = 1; i <= harms; i++) {
|
for (let i = 1; i <= harms; i++) {
|
||||||
let arr1 = [];
|
|
||||||
let arr2 = [];
|
|
||||||
xmin = Math.round(i * (obj.freq - obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс левой границы коридора
|
xmin = Math.round(i * (obj.freq - obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс левой границы коридора
|
||||||
xmax = Math.round(i * (obj.freq + obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс правой границы коридора
|
xmax = Math.round(i * (obj.freq + obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс правой границы коридора
|
||||||
if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива
|
if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива
|
||||||
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + dl }; //записываем значение глубины модуляции для коридора
|
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + dl }; //записываем значение глубины модуляции для коридора
|
||||||
|
dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания
|
||||||
|
|
||||||
for (let j = xmin - 2; j <= xmax + 2; j++) {
|
for (let j = xmin - 2; j <= xmax + 2; j++) {
|
||||||
arr1.push(mask[j]);
|
arr1.push(mask[j]);
|
||||||
arr2.push(data[j]);
|
arr2.push(data[j]);
|
||||||
}; //формируем массивы портретной гармоники и спектра (модели) под портретом
|
}; //формируем массивы портретной гармоники и спектра (модели) под портретом
|
||||||
correlation += corr(arr1, arr2); //рассчитываем корреляцию данных из массивов
|
correlation += corr(arr1, arr2); //рассчитываем корреляцию данных из массивов
|
||||||
dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания
|
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case 1: //четные составляющие
|
case 1: //четные составляющие
|
||||||
for (let i = 1; i < harms; i++) {
|
for (let i = 1; i <= harms; i++) {
|
||||||
|
xmin = Math.round(i * (obj.freq - obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс левой границы коридора
|
||||||
|
xmax = Math.round(i * (obj.freq + obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс правой границы коридора
|
||||||
|
if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива
|
||||||
if (i % 2 > 0) {
|
if (i % 2 > 0) {
|
||||||
|
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + k * dl }; //записываем значение глубины модуляции для коридора (нечетная гармоника)
|
||||||
|
} else {
|
||||||
|
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + dl }; //записываем значение глубины модуляции для коридора (четная гармоника)
|
||||||
|
dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания
|
||||||
};
|
};
|
||||||
|
|
||||||
|
for (let j = xmin - 2; j <= xmax + 2; j++) {
|
||||||
|
arr1.push(mask[j]);
|
||||||
|
arr2.push(data[j]);
|
||||||
|
}; //формируем массивы портретной гармоники и спектра (модели) под портретом
|
||||||
|
correlation += corr(arr1, arr2); //рассчитываем корреляцию данных из массивов
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -105,7 +117,7 @@ export function mask(obj) {
|
||||||
//отрисовка графика на plot
|
//отрисовка графика на plot
|
||||||
gtl.plot.add(
|
gtl.plot.add(
|
||||||
{
|
{
|
||||||
color: 0xff0000,
|
color: obj.color,
|
||||||
name: obj.name,
|
name: obj.name,
|
||||||
x: obj.src2.resolution,
|
x: obj.src2.resolution,
|
||||||
y: mask
|
y: mask
|
||||||
|
|
Loading…
Reference in New Issue