mask was changed

develop
Aleksey_K 2024-05-15 14:24:04 +09:00
parent 411b9aa062
commit eccc29b171
1 changed files with 38 additions and 12 deletions

View File

@ -1,8 +1,12 @@
export function mask(spec, filter, frq, harms, lvl, tol, state) { export function mask(spec, filter, frq, harms, lvl, tol, state) {
let mask = spec.base; //исходный массив точек для построения портрета дефекта let mask = spec.base; //исходный массив точек для построения портрета дефекта
let df = filter.width / spec.resolution; //отношение ширины фильтра частотному разрешению спектра let df = 0; //отношение ширины фильтра частотному разрешению спектра
let dl = 10 * Math.log10((lvl ** 2) * df + 1); //разность уровней гармонической и случайной составляющей вибрации let dl = lvl; //разность уровней гармонической и случайной составляющей вибрации
if (filter != 0) {
df = filter.width / spec.resolution;
dl = 10 * Math.log10((lvl ** 2) * df + 1);
};
let k = 0; //коэффициент затухания let k = 0; //коэффициент затухания
let xmin = 0; //левая граница коридора let xmin = 0; //левая граница коридора
let xmax = 0; //правая граница коридора let xmax = 0; //правая граница коридора
@ -11,8 +15,8 @@ export function mask(spec, filter, frq, harms, lvl, tol, state) {
case 0: //маска износа: коэффициент затухания 30-50% case 0: //маска износа: коэффициент затухания 30-50%
for (let i = 1; i <= harms; i++) { for (let i = 1; i <= harms; i++) {
k = 0.5; k = 0.5;
xmin = Math.round(i * (frq - frq * tol / 100) / spec.resolution); //определяем индекс левой границы коридора xmin = Math.round(i * (frq - frq * 0.5 * tol / 100) / spec.resolution); //определяем индекс левой границы коридора
xmax = Math.round(i * (frq + frq * tol / 100) / spec.resolution); //определяем индекс правой границы коридора; xmax = Math.round(i * (frq + frq * 0.5 * tol / 100) / spec.resolution); //определяем индекс правой границы коридора;
for (let j = xmin; j <= xmax; j++) { mask[j] = spec.base[j] + dl }; //записываем значение глубины модуляции для коридора for (let j = xmin; j <= xmax; j++) { mask[j] = spec.base[j] + dl }; //записываем значение глубины модуляции для коридора
dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания
}; };
@ -20,8 +24,8 @@ export function mask(spec, filter, frq, harms, lvl, tol, state) {
case 1: //маска дефекта: коэффициент затухания 5-10% case 1: //маска дефекта: коэффициент затухания 5-10%
for (let i = 1; i <= harms; i++) { for (let i = 1; i <= harms; i++) {
k = 0.1; k = 0.1;
xmin = Math.round(i * (frq - frq * tol / 100) / spec.resolution); //определяем индекс левой границы коридора xmin = Math.round(i * (frq - frq * 0.5 * tol / 100) / spec.resolution); //определяем индекс левой границы коридора
xmax = Math.round(i * (frq + frq * tol / 100) / spec.resolution); //определяем индекс правой границы коридора; xmax = Math.round(i * (frq + frq * 0.5 * tol / 100) / spec.resolution); //определяем индекс правой границы коридора;
for (let j = xmin; j <= xmax; j++) { mask[j] = spec.base[j] + dl }; //записываем значение глубины модуляции для коридора for (let j = xmin; j <= xmax; j++) { mask[j] = spec.base[j] + dl }; //записываем значение глубины модуляции для коридора
dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания
}; };
@ -31,12 +35,6 @@ export function mask(spec, filter, frq, harms, lvl, tol, state) {
if (i % 2 > 0) { if (i % 2 > 0) {
k = 0.1; k = 0.1;
}; };
}; };
break; break;
@ -56,3 +54,31 @@ export function mask(spec, filter, frq, harms, lvl, tol, state) {
return mask; return mask;
}; //построение портрета дефекта }; //построение портрета дефекта
export function spec_model(spec) {
let model = spec.base; //исходный массив точек для построения упрощенной модели спектра
let imin = 0; //левый соседний индекс
let imax = 0; //правая соседний индекс
let df = 0; //ширина гармоники в модели спектра (количество индексов в массиве)
for (let i = 0; i < spec.peaks.length; i++) {
let freq = spec.peaks[i].freq; //получаем значение частоты гармоники из массива обнаруженных гармоник
let level = spec.peaks[i].level; //получаем значение уровня гармоники из массива обнаруженных гармоник
let idx = Math.round(freq / spec.resolution); //определяем индекс значения частоты с массиве модели
imin = idx - df;
imax = idx + df;
for (let j = imin; j <= imax; j++) { model[j] = spec.base[j] + level };
};
//отрисовка пользовательского графика
gtl.plot.add(
{
color: 0x44944A,
name: "model_" + spec.name,
x: spec.resolution,
y: model
}
);
return model;
}; //построение упрощенной модели спектра