Современная электроника №8/2026

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 10 WWW.CTA.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 8 / 2026 arm_rms_f32(standard_z, LEN_ WINDOWS, &ref_rms); ● Для запоминания весов сигнала используем: экспоненциальное скользящее среднее (EMA), простей- ший низкочастотный фильтр (IIR- фильтр) или бегущее среднее. Формулу можно написать как: S = 0,5 × S(n – 1) + 0,5 × X(n). Тут происходит сглаживание пиков: если в последовательности чисел про- изойдёт резкий скачок (например, шло 10, 10, 10 и вдруг пришло 100), среднее значение не подскочит до 100 сразу, а будет плавно подбираться к нему: 10 → 55 → 77,5 → 88,75. Таким образом, в значениях масси- ва весов нет резких скачков. ● Если функция работает в режиме об- учения, сохраняем рассчитанные ве- са сигнала: my_model.weights_AxisX[couLernAI]; my_model.weights_AxisY[couLernAI]; my_model.weights_AxisZ[couLernAI]; иначе – игнорируем сохранение весов. ● На выходе функции получаем при- знаки и веса сигнала. В функции распознавания схоже- сти используется алгоритм расчёта степени сходства на основе средне- квадратичной ошибки (RMSE/RMS) или метрики сходства по нормиро- ванной среднеквадратичной ошиб- ке (NRMSE). Этот алгоритм применяется, когда критически важны и форма, и абсо- лютные значения (например, совпа- дение физических сигналов, напряже- ний или аудиосигналов). Он подходит для сравнения сигна- лов с датчиков или других физических процессов. ● Находим поэлементную разни- цу векторов (pRef[i] – pInput[i]); ре- зультат складывается во временный буфер diff_buffer arm_sub_f32(pRef, pInput, diff_buffer, len_size). ● Вычисляем RMS (среднеквадратич- ную ошибку) полученной разности. Алгоритм использует RMS (извлека- ет квадратный корень), возвращая ошибку к исходной физической ве- личине. Это делает сравнение с эта- лоном линейным и более интуи- тивным. Функция внутри возводит элементы в квадрат, берёт среднее и извлекает корень arm_rms_f32(diff_ buffer, len_size, &rmse). ● Вычисляем RMS самого эталона, что- бы понять его масштаб/энергию: arm_rms_f32(pRef, len_size, &ref_ rms). ● Перевод величины ошибки в про- цент схожести: float32_t error_percent = (rmse / ref_ rms) * 100.0f; float32_t similarity = 100.0f - error_ percent. На выходе функции получаем зна- чение схожести от 0% до 100%. Рекомендации по компиляции модели. 1. При компиляции проекта необхо- димо указать основной макрос в на- стройках проекта IAR, например, ARM_MATH_CM4 для STM32F4. 2. Нулевое выделение памяти во вре- мя работы программы. Все массивы c типом (Float – вещественных чи- сел) должны быть объявлены ста- тически и выровнены по границе 4 байт (__attribute__((aligned(4)))), что необходимо для корректной и бы- строй работы шины FPU. 3. При компиляции со знаком «High» следует отключить пункт «Static Clustering» (статическая кластери- зация). Этот метод оптимизации размещения данных в памяти, при котором глобальные и статические переменные, используемые внутри одной функции или модуля, группи- руются (кластеризуются) как можно ближе друг к другу в структуре RAM. При использовании этого метода со знаком «High» функции ARM DSP в модели престают работать. Результаты измерений нашей модели MML На рис. 5 наша модель обучена на сигналах с некоторым преоблада- нием значений на оси X. Затем про- исходит остановка вращения вен- тилятора, и суммарный сигнал на графике не превышает амплитуды шума состояния покоя. Модель пра- вильно определяет схожесть и раз- личие сигналов. На рис. 6 наша модель обучена на сигналах оси X = 55 и значениях шума на осях Y, Z. При изменениях значе- ния на оси X = шум, а на оси Y = 55 модель реагирует снижением про- цента схожести на изменения сигна- лов. При изменении значений на осях Z = 55, Y = шум также модель снижает процент схожести на изменения сиг- налов. При общем снижении ампли- туд сигналов модель MML показывает отсутствие схожести. Модель пра- вильно определяет схожесть и раз- личие сигналов. На рис. 7 наша модель обучена на сигнале оси Y = 55 и значениях шума на осях X, Z. Модель распознаёт рав- ные, взаимные изменения на осях, снижая процент схожести. При общем снижении амплитуд сигналов модель также показывает отсутствие схоже- сти. Модель правильно определяет схожесть и различие сигналов. На рис. 8 более сложный пример. Наша модель обучена на сигналах с некоторым преобладанием значений на осях X, Y. Затем в общий спектр сиг- нала последовательно добавляются Рис. 4. Модель NanoEdge AI Studio, обученная на сигнале оси Y = 55 и значениях шума на осях X, Z Рис. 5. Модель, обученная на сигналах с некоторым преобладанием значений на оси X

RkJQdWJsaXNoZXIy MTQ4NjUy