<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iot industrial - MCU &amp; FPGA</title>
	<atom:link href="https://mcu.tec.br/tags/iot-industrial/feed/" rel="self" type="application/rss+xml" />
	<link>https://mcu.tec.br</link>
	<description>Microcontroladores &#38; FPGA</description>
	<lastBuildDate>Sat, 07 Feb 2026 18:18:16 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mcu.tec.br/wp-content/uploads/2025/02/Robo-para-o-site-MCU.tec_.br-512x512-1-150x150.png</url>
	<title>iot industrial - MCU &amp; FPGA</title>
	<link>https://mcu.tec.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Protocolos para Redes de Sensores e IoT: LEACH, PEGASIS, TDMA, 6TiSCH e WirelessHART</title>
		<link>https://mcu.tec.br/protoclolos/protocolos-para-redes-de-sensores-e-iot-leach-pegasis-tdma-6tisch-e-wirelesshart/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=protocolos-para-redes-de-sensores-e-iot-leach-pegasis-tdma-6tisch-e-wirelesshart</link>
					<comments>https://mcu.tec.br/protoclolos/protocolos-para-redes-de-sensores-e-iot-leach-pegasis-tdma-6tisch-e-wirelesshart/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Sat, 07 Feb 2026 18:13:47 +0000</pubDate>
				<category><![CDATA[IoT]]></category>
		<category><![CDATA[protoclolos]]></category>
		<category><![CDATA[6TiSCH]]></category>
		<category><![CDATA[comunicação sem fio industrial]]></category>
		<category><![CDATA[eficiência energética]]></category>
		<category><![CDATA[firmware embarcado]]></category>
		<category><![CDATA[IEEE 802.15.4e]]></category>
		<category><![CDATA[IIoT]]></category>
		<category><![CDATA[iot industrial]]></category>
		<category><![CDATA[LEACH]]></category>
		<category><![CDATA[PEGASIS]]></category>
		<category><![CDATA[protocolos de comunicação]]></category>
		<category><![CDATA[redes de sensores sem fio]]></category>
		<category><![CDATA[redes determinísticas]]></category>
		<category><![CDATA[sistemas embarcados]]></category>
		<category><![CDATA[TDMA]]></category>
		<category><![CDATA[TSCH]]></category>
		<category><![CDATA[WirelessHART]]></category>
		<category><![CDATA[WSN]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1269</guid>

					<description><![CDATA[<p>Este artigo apresenta uma análise técnica e didática dos principais protocolos utilizados em Redes de Sensores Sem Fio (Wireless Sensor Networks – WSNs) e sua evolução até o IoT industrial moderno. São explorados em profundidade os protocolos LEACH (Low-Energy Adaptive Clustering Hierarchy) e PEGASIS (Power-Efficient Gathering in Sensor Information Systems), amplamente estudados no meio acadêmico por sua eficiência energética e estratégias de organização da rede, bem como o papel fundamental do TDMA (Time Division Multiple Access) na construção de sistemas determinísticos e previsíveis. O texto avança para protocolos industriais consolidados, como 6TiSCH (IPv6 over TSCH IEEE 802.15.4e) e WirelessHART, destacando seus mecanismos de sincronização temporal, salto de frequência, confiabilidade, interoperabilidade e adequação a sistemas embarcados de baixo consumo. Ao longo do artigo, são discutidos os conceitos de clusterização, roteamento em cadeia, agendamento temporal e comunicação determinística, sempre conectando teoria, firmware embarcado e contexto de uso real em aplicações industriais, ambientais e de infraestrutura crítica. O conteúdo é direcionado a engenheiros, estudantes e profissionais que desejam compreender as bases conceituais que sustentam o IoT moderno e o Industrial IoT, indo além de protocolos de aplicação e explorando a camada estrutural das redes distribuídas de sensores.</p>
<p>The post <a href="https://mcu.tec.br/protoclolos/protocolos-para-redes-de-sensores-e-iot-leach-pegasis-tdma-6tisch-e-wirelesshart/">Protocolos para Redes de Sensores e IoT: LEACH, PEGASIS, TDMA, 6TiSCH e WirelessHART</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-sssef wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-sssef "><div class="eb-toc-container eb-toc-sssef  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemCollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:3,&quot;content&quot;:&quot;Introdu\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Introdu\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-0&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;LEACH \u2013 Low-Energy Adaptive Clustering Hierarchy&quot;,&quot;text&quot;:&quot;LEACH \u2013 Low-Energy Adaptive Clustering Hierarchy&quot;,&quot;link&quot;:&quot;leach-low-energy-adaptive-clustering-hierarchy&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;PEGASIS \u2013 Power-Efficient Gathering in Sensor Information Systems&quot;,&quot;text&quot;:&quot;PEGASIS \u2013 Power-Efficient Gathering in Sensor Information Systems&quot;,&quot;link&quot;:&quot;pegasis-power-efficient-gathering-in-sensor-information-systems&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;TDMA \u2013 Time Division Multiple Access&quot;,&quot;text&quot;:&quot;TDMA \u2013 Time Division Multiple Access&quot;,&quot;link&quot;:&quot;tdma-time-division-multiple-access&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;6TiSCH \u2013 IPv6 over the TSCH mode of IEEE 802.15.4e&quot;,&quot;text&quot;:&quot;6TiSCH \u2013 IPv6 over the TSCH mode of IEEE 802.15.4e&quot;,&quot;link&quot;:&quot;6tisch-ipv6-over-the-tsch-mode-of-ieee-802154e&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;WirelessHART \u2013 Highway Addressable Remote Transducer (Wireless)&quot;,&quot;text&quot;:&quot;WirelessHART \u2013 Highway Addressable Remote Transducer (Wireless)&quot;,&quot;link&quot;:&quot;wirelesshart-highway-addressable-remote-transducer-wireless&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Tabela comparativa entre os protocolos analisados&quot;,&quot;text&quot;:&quot;Tabela comparativa entre os protocolos analisados&quot;,&quot;link&quot;:&quot;tabela-comparativa-entre-os-protocolos-analisados&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Conclus\u00e3o&quot;,&quot;text&quot;:&quot;Conclus\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-7&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;Introdu\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;introdu\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;LEACH \u2013 Low-Energy Adaptive Clustering Hierarchy&quot;,&quot;value&quot;:&quot;leach-low-energy-adaptive-clustering-hierarchy&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PEGASIS \u2013 Power-Efficient Gathering in Sensor Information Systems&quot;,&quot;value&quot;:&quot;pegasis-power-efficient-gathering-in-sensor-information-systems&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;TDMA \u2013 Time Division Multiple Access&quot;,&quot;value&quot;:&quot;tdma-time-division-multiple-access&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6TiSCH \u2013 IPv6 over the TSCH mode of IEEE 802.15.4e&quot;,&quot;value&quot;:&quot;6tisch-ipv6-over-the-tsch-mode-of-ieee-802154e&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;WirelessHART \u2013 Highway Addressable Remote Transducer (Wireless)&quot;,&quot;value&quot;:&quot;wirelesshart-highway-addressable-remote-transducer-wireless&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Tabela comparativa entre os protocolos analisados&quot;,&quot;value&quot;:&quot;tabela-comparativa-entre-os-protocolos-analisados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o&quot;,&quot;value&quot;:&quot;conclus\u00e3o&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class='eb-toc__list'><li><a href="#eb-table-content-0">Introdução</a><li><a href="#leach-low-energy-adaptive-clustering-hierarchy">LEACH – Low-Energy Adaptive Clustering Hierarchy</a><li><a href="#pegasis-power-efficient-gathering-in-sensor-information-systems">PEGASIS – Power-Efficient Gathering in Sensor Information Systems</a><li><a href="#tdma-time-division-multiple-access">TDMA – Time Division Multiple Access</a><li><a href="#6tisch-ipv6-over-the-tsch-mode-of-ieee-802154e">6TiSCH – IPv6 over the TSCH mode of IEEE 802.15.4e</a><li><a href="#wirelesshart-highway-addressable-remote-transducer-wireless">WirelessHART – Highway Addressable Remote Transducer (Wireless)</a><ul class='eb-toc__list'><li><a href="#tabela-comparativa-entre-os-protocolos-analisados">Tabela comparativa entre os protocolos analisados</a><li><a href="#eb-table-content-7">Conclusão</a></li></ul></ul></div></div></div></div></div>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Introdução</h3>



<p>Redes de sensores sem fio e sistemas embarcados de baixo consumo formam a espinha dorsal de grande parte das aplicações modernas de Internet das Coisas (IoT), especialmente nos domínios industrial, ambiental e de infraestrutura crítica. Nesses cenários, os desafios não se restringem à aquisição de dados, mas envolvem de forma central <strong>como os nós se organizam, como compartilham o meio de comunicação e como preservam energia ao longo de anos de operação</strong>. É nesse contexto que surgem protocolos voltados à eficiência energética, à previsibilidade temporal e à confiabilidade da comunicação.</p>



<p>Protocolos como <strong>LEACH</strong> e <strong>PEGASIS</strong> emergem inicialmente no meio acadêmico como respostas diretas às limitações físicas dos nós sensores, propondo novas formas de organização da rede para reduzir o custo energético das transmissões. Esses trabalhos estabelecem fundamentos conceituais importantes, como agregação de dados, hierarquização e comunicação cooperativa, que influenciaram profundamente a evolução das Wireless Sensor Networks e, posteriormente, do IoT.</p>



<p>À medida que as aplicações avançam para ambientes industriais e de missão crítica, a necessidade de <strong>determinismo, robustez e interoperabilidade</strong> torna-se dominante. Técnicas como <strong>TDMA</strong> passam a ser adotadas como base estrutural, permitindo controle preciso do tempo, do consumo e da latência. Sobre esse alicerce, surgem protocolos industriais como <strong>6TiSCH</strong> e <strong>WirelessHART</strong>, que consolidam esses princípios em padrões amplamente utilizados no Industrial IoT.</p>



<p>Este artigo apresenta uma análise progressiva desses protocolos, explorando seus conceitos fundamentais, modos de funcionamento e contextos de uso, com foco especial na relação direta entre <strong>arquitetura de rede, firmware embarcado e eficiência energética</strong>. Ao compreender essa trajetória, torna-se possível enxergar o IoT não como um conjunto de tecnologias isoladas, mas como o resultado de décadas de refinamento conceitual no campo das redes de sensores e sistemas embarcados distribuídos.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/><p>The post <a href="https://mcu.tec.br/protoclolos/protocolos-para-redes-de-sensores-e-iot-leach-pegasis-tdma-6tisch-e-wirelesshart/">Protocolos para Redes de Sensores e IoT: LEACH, PEGASIS, TDMA, 6TiSCH e WirelessHART</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mcu.tec.br/protoclolos/protocolos-para-redes-de-sensores-e-iot-leach-pegasis-tdma-6tisch-e-wirelesshart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1269</post-id>	</item>
		<item>
		<title>LPCC (Linear Prediction Cepstral Coefficients): Fundamentos, Algoritmos e Aplicações em Sistemas Embarcados</title>
		<link>https://mcu.tec.br/algoritimos/dsp/lpcc-linear-prediction-cepstral-coefficients-fundamentos-algoritmos-e-aplicacoes-em-sistemas-embarcados/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lpcc-linear-prediction-cepstral-coefficients-fundamentos-algoritmos-e-aplicacoes-em-sistemas-embarcados</link>
					<comments>https://mcu.tec.br/algoritimos/dsp/lpcc-linear-prediction-cepstral-coefficients-fundamentos-algoritmos-e-aplicacoes-em-sistemas-embarcados/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Fri, 30 Jan 2026 18:04:34 +0000</pubDate>
				<category><![CDATA[DSP]]></category>
		<category><![CDATA[algoritmo de Levinson-Durbin]]></category>
		<category><![CDATA[análise de sinais]]></category>
		<category><![CDATA[autocorrelação]]></category>
		<category><![CDATA[diagnóstico de falhas]]></category>
		<category><![CDATA[edge computing]]></category>
		<category><![CDATA[extração de características]]></category>
		<category><![CDATA[firmware DSP]]></category>
		<category><![CDATA[iot industrial]]></category>
		<category><![CDATA[Linear Prediction Cepstral Coefficients]]></category>
		<category><![CDATA[LPC]]></category>
		<category><![CDATA[LPCC]]></category>
		<category><![CDATA[MFCC vs LPCC]]></category>
		<category><![CDATA[predição linear]]></category>
		<category><![CDATA[processamento digital de sinais]]></category>
		<category><![CDATA[sistemas embarcados]]></category>
		<category><![CDATA[vibroacústica]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1254</guid>

					<description><![CDATA[<p>Os coeficientes cepstrais por predição linear (LPCC) são uma técnica clássica e altamente eficiente para extração de características em sinais de fala, vibração e acústica industrial. Neste artigo, apresentamos uma explicação completa e didática sobre LPCC, partindo dos fundamentos da predição linear (LP), passando pela autocorrelação, equações de Yule-Walker, algoritmo de Levinson-Durbin e erro de predição, até a conversão de coeficientes LPC em LPCC. Todo o conteúdo é contextualizado para aplicações práticas em sistemas embarcados, edge computing, IoT e diagnóstico vibroacústico, com exemplos de implementação em linguagem C, sem dependência de MATLAB ou bibliotecas pesadas. Também é apresentada uma comparação técnica entre LPCC e MFCC, destacando diferenças conceituais, computacionais e de interpretabilidade. O artigo é indicado para engenheiros, estudantes e pesquisadores que buscam compreender não apenas como usar LPCC, mas por que essa técnica continua relevante em aplicações industriais, manutenção preditiva, detecção de anomalias e análise de sinais físicos em ambientes com recursos limitados.</p>
<p>The post <a href="https://mcu.tec.br/algoritimos/dsp/lpcc-linear-prediction-cepstral-coefficients-fundamentos-algoritmos-e-aplicacoes-em-sistemas-embarcados/">LPCC (Linear Prediction Cepstral Coefficients): Fundamentos, Algoritmos e Aplicações em Sistemas Embarcados</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-8gar6 wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-8gar6 "><div class="eb-toc-container eb-toc-8gar6  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemCollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;1 \u2014 LPC (Linear Predictive Coding)&quot;,&quot;text&quot;:&quot;1 \u2014 LPC (Linear Predictive Coding)&quot;,&quot;link&quot;:&quot;1-lpc-linear-predictive-coding&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa LPC&quot;,&quot;text&quot;:&quot;O que significa LPC&quot;,&quot;link&quot;:&quot;o-que-significa-lpc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Intui\u00e7\u00e3o f\u00edsica e de sinal&quot;,&quot;text&quot;:&quot;Intui\u00e7\u00e3o f\u00edsica e de sinal&quot;,&quot;link&quot;:&quot;eb-table-content-2&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Modelo matem\u00e1tico do LPC&quot;,&quot;text&quot;:&quot;Modelo matem\u00e1tico do LPC&quot;,&quot;link&quot;:&quot;eb-table-content-3&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Por que o LPC \u00e9 importante para LPCC&quot;,&quot;text&quot;:&quot;Por que o LPC \u00e9 importante para LPCC&quot;,&quot;link&quot;:&quot;eb-table-content-4&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Implementa\u00e7\u00e3o conceitual do LPC em C (vis\u00e3o geral)&quot;,&quot;text&quot;:&quot;Implementa\u00e7\u00e3o conceitual do LPC em C (vis\u00e3o geral)&quot;,&quot;link&quot;:&quot;eb-table-content-5&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exemplo em C \u2014 c\u00e1lculo da autocorrela\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Exemplo em C \u2014 c\u00e1lculo da autocorrela\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-6&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Observa\u00e7\u00f5es pr\u00e1ticas para sistemas embarcados&quot;,&quot;text&quot;:&quot;Observa\u00e7\u00f5es pr\u00e1ticas para sistemas embarcados&quot;,&quot;link&quot;:&quot;eb-table-content-7&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;2 \u2014 LPCC (Linear Prediction Cepstral Coefficients)&quot;,&quot;text&quot;:&quot;2 \u2014 LPCC (Linear Prediction Cepstral Coefficients)&quot;,&quot;link&quot;:&quot;2-lpcc-linear-prediction-cepstral-coefficients&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa LPCC&quot;,&quot;text&quot;:&quot;O que significa LPCC&quot;,&quot;link&quot;:&quot;o-que-significa-lpcc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que \u00e9 o dom\u00ednio cepstral (intui\u00e7\u00e3o)&quot;,&quot;text&quot;:&quot;O que \u00e9 o dom\u00ednio cepstral (intui\u00e7\u00e3o)&quot;,&quot;link&quot;:&quot;eb-table-content-10&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Rela\u00e7\u00e3o matem\u00e1tica entre LPC e LPCC&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o matem\u00e1tica entre LPC e LPCC&quot;,&quot;link&quot;:&quot;eb-table-content-11&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Por que LPCC \u00e9 prefer\u00edvel ao LPC em Machine Learning&quot;,&quot;text&quot;:&quot;Por que LPCC \u00e9 prefer\u00edvel ao LPC em Machine Learning&quot;,&quot;link&quot;:&quot;eb-table-content-12&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Implementa\u00e7\u00e3o em C \u2014 LPC \u2192 LPCC&quot;,&quot;text&quot;:&quot;Implementa\u00e7\u00e3o em C \u2014 LPC \u2192 LPCC&quot;,&quot;link&quot;:&quot;eb-table-content-13&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Observa\u00e7\u00f5es importantes sobre o c\u00f3digo&quot;,&quot;text&quot;:&quot;Observa\u00e7\u00f5es importantes sobre o c\u00f3digo&quot;,&quot;link&quot;:&quot;eb-table-content-14&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Complexidade computacional&quot;,&quot;text&quot;:&quot;Complexidade computacional&quot;,&quot;link&quot;:&quot;complexidade-computacional&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;3 \u2014 CEPSTRUM&quot;,&quot;text&quot;:&quot;3 \u2014 CEPSTRUM&quot;,&quot;link&quot;:&quot;3-cepstrum&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa Cepstrum&quot;,&quot;text&quot;:&quot;O que significa Cepstrum&quot;,&quot;link&quot;:&quot;o-que-significa-cepstrum&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Intui\u00e7\u00e3o f\u00edsica do Cepstrum&quot;,&quot;text&quot;:&quot;Intui\u00e7\u00e3o f\u00edsica do Cepstrum&quot;,&quot;link&quot;:&quot;eb-table-content-18&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Cepstrum \u201ccl\u00e1ssico\u201d vs Cepstrum via LPC&quot;,&quot;text&quot;:&quot;Cepstrum \u201ccl\u00e1ssico\u201d vs Cepstrum via LPC&quot;,&quot;link&quot;:&quot;eb-table-content-19&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;1. Cepstrum via FFT (cepstrum cl\u00e1ssico)&quot;,&quot;text&quot;:&quot;1. Cepstrum via FFT (cepstrum cl\u00e1ssico)&quot;,&quot;link&quot;:&quot;eb-table-content-20&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;2. Cepstrum via LPC (LPCC)&quot;,&quot;text&quot;:&quot;2. Cepstrum via LPC (LPCC)&quot;,&quot;link&quot;:&quot;2-cepstrum-via-lpc-lpcc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Por que o Cepstrum \u00e9 t\u00e3o poderoso&quot;,&quot;text&quot;:&quot;Por que o Cepstrum \u00e9 t\u00e3o poderoso&quot;,&quot;link&quot;:&quot;eb-table-content-22&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Quefr\u00eancia: interpreta\u00e7\u00e3o correta&quot;,&quot;text&quot;:&quot;Quefr\u00eancia: interpreta\u00e7\u00e3o correta&quot;,&quot;link&quot;:&quot;eb-table-content-23&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Conex\u00e3o direta com LPCC&quot;,&quot;text&quot;:&quot;Conex\u00e3o direta com LPCC&quot;,&quot;link&quot;:&quot;eb-table-content-24&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;4 \u2014 LP (Linear Prediction)&quot;,&quot;text&quot;:&quot;4 \u2014 LP (Linear Prediction)&quot;,&quot;link&quot;:&quot;4-lp-linear-prediction&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa LP&quot;,&quot;text&quot;:&quot;O que significa LP&quot;,&quot;link&quot;:&quot;o-que-significa-lp&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Predi\u00e7\u00e3o linear como modelo autoregressivo (AR)&quot;,&quot;text&quot;:&quot;Predi\u00e7\u00e3o linear como modelo autoregressivo (AR)&quot;,&quot;link&quot;:&quot;eb-table-content-27&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Interpreta\u00e7\u00e3o como filtro digital&quot;,&quot;text&quot;:&quot;Interpreta\u00e7\u00e3o como filtro digital&quot;,&quot;link&quot;:&quot;eb-table-content-28&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Estabilidade do modelo LP&quot;,&quot;text&quot;:&quot;Estabilidade do modelo LP&quot;,&quot;link&quot;:&quot;estabilidade-do-modelo-lp&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Escolha da ordem do modelo (p)&quot;,&quot;text&quot;:&quot;Escolha da ordem do modelo (p)&quot;,&quot;link&quot;:&quot;escolha-da-ordem-do-modelo-p&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Rela\u00e7\u00e3o direta entre LP, LPC e LPCC&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o direta entre LP, LPC e LPCC&quot;,&quot;link&quot;:&quot;eb-table-content-31&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exemplo conceitual em C \u2014 erro de predi\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Exemplo conceitual em C \u2014 erro de predi\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-32&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;5 \u2014 AC (Autocorrelation)&quot;,&quot;text&quot;:&quot;5 \u2014 AC (Autocorrelation)&quot;,&quot;link&quot;:&quot;5-ac-autocorrelation&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa AC&quot;,&quot;text&quot;:&quot;O que significa AC&quot;,&quot;link&quot;:&quot;o-que-significa-ac&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Defini\u00e7\u00e3o matem\u00e1tica da autocorrela\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Defini\u00e7\u00e3o matem\u00e1tica da autocorrela\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-35&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Por que a autocorrela\u00e7\u00e3o \u00e9 usada em LPC&quot;,&quot;text&quot;:&quot;Por que a autocorrela\u00e7\u00e3o \u00e9 usada em LPC&quot;,&quot;link&quot;:&quot;eb-table-content-36&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;1. Garante estabilidade do filtro LPC&quot;,&quot;text&quot;:&quot;1. Garante estabilidade do filtro LPC&quot;,&quot;link&quot;:&quot;1-garante-estabilidade-do-filtro-lpc&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;2. Reduz sensibilidade a ru\u00eddo&quot;,&quot;text&quot;:&quot;2. Reduz sensibilidade a ru\u00eddo&quot;,&quot;link&quot;:&quot;eb-table-content-38&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;3. Conecta LP a m\u00ednimos quadrados&quot;,&quot;text&quot;:&quot;3. Conecta LP a m\u00ednimos quadrados&quot;,&quot;link&quot;:&quot;eb-table-content-39&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Equa\u00e7\u00f5es de Yule-Walker&quot;,&quot;text&quot;:&quot;Equa\u00e7\u00f5es de Yule-Walker&quot;,&quot;link&quot;:&quot;eb-table-content-40&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica da autocorrela\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica da autocorrela\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-41&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Autocorrela\u00e7\u00e3o e estacionariedade&quot;,&quot;text&quot;:&quot;Autocorrela\u00e7\u00e3o e estacionariedade&quot;,&quot;link&quot;:&quot;eb-table-content-42&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Implementa\u00e7\u00e3o em C \u2014 autocorrela\u00e7\u00e3o (revis\u00e3o pr\u00e1tica)&quot;,&quot;text&quot;:&quot;Implementa\u00e7\u00e3o em C \u2014 autocorrela\u00e7\u00e3o (revis\u00e3o pr\u00e1tica)&quot;,&quot;link&quot;:&quot;eb-table-content-43&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Consequ\u00eancias pr\u00e1ticas em sistemas embarcados&quot;,&quot;text&quot;:&quot;Consequ\u00eancias pr\u00e1ticas em sistemas embarcados&quot;,&quot;link&quot;:&quot;eb-table-content-44&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;6 \u2014 LDA (Levinson\u2013Durbin Algorithm)&quot;,&quot;text&quot;:&quot;6 \u2014 LDA (Levinson\u2013Durbin Algorithm)&quot;,&quot;link&quot;:&quot;6-lda-levinsondurbin-algorithm&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa LDA neste contexto&quot;,&quot;text&quot;:&quot;O que significa LDA neste contexto&quot;,&quot;link&quot;:&quot;o-que-significa-lda-neste-contexto&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Por que Levinson\u2013Durbin \u00e9 essencial&quot;,&quot;text&quot;:&quot;Por que Levinson\u2013Durbin \u00e9 essencial&quot;,&quot;link&quot;:&quot;eb-table-content-47&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Estrutura recursiva do algoritmo&quot;,&quot;text&quot;:&quot;Estrutura recursiva do algoritmo&quot;,&quot;link&quot;:&quot;estrutura-recursiva-do-algoritmo&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica do coeficiente de reflex\u00e3o&quot;,&quot;text&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica do coeficiente de reflex\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-49&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Implementa\u00e7\u00e3o completa em C \u2014 Levinson\u2013Durbin&quot;,&quot;text&quot;:&quot;Implementa\u00e7\u00e3o completa em C \u2014 Levinson\u2013Durbin&quot;,&quot;link&quot;:&quot;eb-table-content-50&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Observa\u00e7\u00f5es importantes sobre o c\u00f3digo&quot;,&quot;text&quot;:&quot;Observa\u00e7\u00f5es importantes sobre o c\u00f3digo&quot;,&quot;link&quot;:&quot;eb-table-content-51&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Papel do Levinson\u2013Durbin no pipeline completo&quot;,&quot;text&quot;:&quot;Papel do Levinson\u2013Durbin no pipeline completo&quot;,&quot;link&quot;:&quot;papel-do-levinsondurbin-no-pipeline-completo&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;7 \u2014 PE (Prediction Error)&quot;,&quot;text&quot;:&quot;7 \u2014 PE (Prediction Error)&quot;,&quot;link&quot;:&quot;7-pe-prediction-error&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa PE&quot;,&quot;text&quot;:&quot;O que significa PE&quot;,&quot;link&quot;:&quot;o-que-significa-pe&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Energia do erro de predi\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Energia do erro de predi\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-55&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica do erro de predi\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica do erro de predi\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-56&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;Em fala&quot;,&quot;text&quot;:&quot;Em fala&quot;,&quot;link&quot;:&quot;em-fala&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;Em vibra\u00e7\u00e3o mec\u00e2nica&quot;,&quot;text&quot;:&quot;Em vibra\u00e7\u00e3o mec\u00e2nica&quot;,&quot;link&quot;:&quot;eb-table-content-58&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Rela\u00e7\u00e3o direta entre PE e LPCC (coeficiente c\u2080)&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o direta entre PE e LPCC (coeficiente c\u2080)&quot;,&quot;link&quot;:&quot;eb-table-content-59&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;PE como m\u00e9trica de qualidade do modelo&quot;,&quot;text&quot;:&quot;PE como m\u00e9trica de qualidade do modelo&quot;,&quot;link&quot;:&quot;eb-table-content-60&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exemplo em C \u2014 c\u00e1lculo expl\u00edcito do erro m\u00e9dio&quot;,&quot;text&quot;:&quot;Exemplo em C \u2014 c\u00e1lculo expl\u00edcito do erro m\u00e9dio&quot;,&quot;link&quot;:&quot;eb-table-content-61&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;PE e estabilidade num\u00e9rica&quot;,&quot;text&quot;:&quot;PE e estabilidade num\u00e9rica&quot;,&quot;link&quot;:&quot;eb-table-content-62&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Rela\u00e7\u00e3o final no pipeline&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o final no pipeline&quot;,&quot;link&quot;:&quot;eb-table-content-63&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Conclus\u00e3o desta se\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Conclus\u00e3o desta se\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-64&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;8 \u2014 LPCC Extraction Pipeline (Pipeline de Extra\u00e7\u00e3o de LPCC)&quot;,&quot;text&quot;:&quot;8 \u2014 LPCC Extraction Pipeline (Pipeline de Extra\u00e7\u00e3o de LPCC)&quot;,&quot;link&quot;:&quot;eb-table-content-65&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Vis\u00e3o geral do pipeline&quot;,&quot;text&quot;:&quot;Vis\u00e3o geral do pipeline&quot;,&quot;link&quot;:&quot;eb-table-content-66&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Etapa 1 \u2014 Janelamento do sinal&quot;,&quot;text&quot;:&quot;Etapa 1 \u2014 Janelamento do sinal&quot;,&quot;link&quot;:&quot;etapa-1-janelamento-do-sinal&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Etapa 2 \u2014 Autocorrela\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Etapa 2 \u2014 Autocorrela\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-68&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Etapa 3 \u2014 Levinson\u2013Durbin&quot;,&quot;text&quot;:&quot;Etapa 3 \u2014 Levinson\u2013Durbin&quot;,&quot;link&quot;:&quot;etapa-3-levinsondurbin&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Etapa 4 \u2014 Convers\u00e3o LPC \u2192 LPCC&quot;,&quot;text&quot;:&quot;Etapa 4 \u2014 Convers\u00e3o LPC \u2192 LPCC&quot;,&quot;link&quot;:&quot;eb-table-content-70&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Etapa 5 \u2014 Vetor de caracter\u00edsticas&quot;,&quot;text&quot;:&quot;Etapa 5 \u2014 Vetor de caracter\u00edsticas&quot;,&quot;link&quot;:&quot;eb-table-content-71&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exemplo completo \u2014 pipeline integrado em C&quot;,&quot;text&quot;:&quot;Exemplo completo \u2014 pipeline integrado em C&quot;,&quot;link&quot;:&quot;exemplo-completo-pipeline-integrado-em-c&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Considera\u00e7\u00f5es num\u00e9ricas e de engenharia&quot;,&quot;text&quot;:&quot;Considera\u00e7\u00f5es num\u00e9ricas e de engenharia&quot;,&quot;link&quot;:&quot;eb-table-content-73&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;9 \u2014 LPCC \u00d7 MFCC (Compara\u00e7\u00e3o Conceitual e Pr\u00e1tica)&quot;,&quot;text&quot;:&quot;9 \u2014 LPCC \u00d7 MFCC (Compara\u00e7\u00e3o Conceitual e Pr\u00e1tica)&quot;,&quot;link&quot;:&quot;eb-table-content-74&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;O que significa MFCC&quot;,&quot;text&quot;:&quot;O que significa MFCC&quot;,&quot;link&quot;:&quot;o-que-significa-mfcc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Diferen\u00e7a filos\u00f3fica entre LPCC e MFCC&quot;,&quot;text&quot;:&quot;Diferen\u00e7a filos\u00f3fica entre LPCC e MFCC&quot;,&quot;link&quot;:&quot;eb-table-content-76&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;LPCC \u2014 modelo f\u00edsico\/matem\u00e1tico&quot;,&quot;text&quot;:&quot;LPCC \u2014 modelo f\u00edsico\/matem\u00e1tico&quot;,&quot;link&quot;:&quot;eb-table-content-77&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;MFCC \u2014 modelo perceptual&quot;,&quot;text&quot;:&quot;MFCC \u2014 modelo perceptual&quot;,&quot;link&quot;:&quot;mfcc-modelo-perceptual&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Pipeline comparativo&quot;,&quot;text&quot;:&quot;Pipeline comparativo&quot;,&quot;link&quot;:&quot;pipeline-comparativo&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;LPCC&quot;,&quot;text&quot;:&quot;LPCC&quot;,&quot;link&quot;:&quot;lpcc&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;MFCC&quot;,&quot;text&quot;:&quot;MFCC&quot;,&quot;link&quot;:&quot;mfcc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Complexidade computacional&quot;,&quot;text&quot;:&quot;Complexidade computacional&quot;,&quot;link&quot;:&quot;complexidade-computacional&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Sensibilidade a ru\u00eddo e n\u00e3o-linearidades&quot;,&quot;text&quot;:&quot;Sensibilidade a ru\u00eddo e n\u00e3o-linearidades&quot;,&quot;link&quot;:&quot;eb-table-content-83&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Interpretabilidade dos coeficientes&quot;,&quot;text&quot;:&quot;Interpretabilidade dos coeficientes&quot;,&quot;link&quot;:&quot;interpretabilidade-dos-coeficientes&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exemplo pr\u00e1tico de escolha&quot;,&quot;text&quot;:&quot;Exemplo pr\u00e1tico de escolha&quot;,&quot;link&quot;:&quot;eb-table-content-85&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Ponto cr\u00edtico raramente discutido&quot;,&quot;text&quot;:&quot;Ponto cr\u00edtico raramente discutido&quot;,&quot;link&quot;:&quot;eb-table-content-86&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;10 \u2014 Aplica\u00e7\u00f5es do LPCC (Linear Prediction Cepstral Coefficients)&quot;,&quot;text&quot;:&quot;10 \u2014 Aplica\u00e7\u00f5es do LPCC (Linear Prediction Cepstral Coefficients)&quot;,&quot;link&quot;:&quot;eb-table-content-87&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Por que LPCC \u00e9 usado na pr\u00e1tica&quot;,&quot;text&quot;:&quot;Por que LPCC \u00e9 usado na pr\u00e1tica&quot;,&quot;link&quot;:&quot;eb-table-content-88&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;1. Reconhecimento e classifica\u00e7\u00e3o de fala (cl\u00e1ssico)&quot;,&quot;text&quot;:&quot;1. Reconhecimento e classifica\u00e7\u00e3o de fala (cl\u00e1ssico)&quot;,&quot;link&quot;:&quot;eb-table-content-89&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;2. Diagn\u00f3stico vibroac\u00fastico e monitoramento de condi\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;2. Diagn\u00f3stico vibroac\u00fastico e monitoramento de condi\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-90&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;3. Detec\u00e7\u00e3o de anomalias (Anomaly Detection)&quot;,&quot;text&quot;:&quot;3. Detec\u00e7\u00e3o de anomalias (Anomaly Detection)&quot;,&quot;link&quot;:&quot;eb-table-content-91&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;4. Classifica\u00e7\u00e3o com Machine Learning cl\u00e1ssico&quot;,&quot;text&quot;:&quot;4. Classifica\u00e7\u00e3o com Machine Learning cl\u00e1ssico&quot;,&quot;link&quot;:&quot;eb-table-content-92&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;5. Monitoramento em tempo real (edge \/ firmware)&quot;,&quot;text&quot;:&quot;5. Monitoramento em tempo real (edge \/ firmware)&quot;,&quot;link&quot;:&quot;5-monitoramento-em-tempo-real-edge-firmware&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;6. Aplica\u00e7\u00f5es em energia e eletromagnetismo&quot;,&quot;text&quot;:&quot;6. Aplica\u00e7\u00f5es em energia e eletromagnetismo&quot;,&quot;link&quot;:&quot;eb-table-content-94&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;7. Por que LPCC \u00e9 subestimado hoje&quot;,&quot;text&quot;:&quot;7. Por que LPCC \u00e9 subestimado hoje&quot;,&quot;link&quot;:&quot;eb-table-content-95&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exemplo conceitual de uso do LPCC em classifica\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Exemplo conceitual de uso do LPCC em classifica\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-96&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Conclus\u00e3o&quot;,&quot;text&quot;:&quot;Conclus\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-97&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;1 \u2014 LPC (Linear Predictive Coding)&quot;,&quot;value&quot;:&quot;1-lpc-linear-predictive-coding&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa LPC&quot;,&quot;value&quot;:&quot;o-que-significa-lpc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Intui\u00e7\u00e3o f\u00edsica e de sinal&quot;,&quot;value&quot;:&quot;intui\u00e7\u00e3o-f\u00edsica-e-de-sinal&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Modelo matem\u00e1tico do LPC&quot;,&quot;value&quot;:&quot;modelo-matem\u00e1tico-do-lpc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que o LPC \u00e9 importante para LPCC&quot;,&quot;value&quot;:&quot;por-que-o-lpc-\u00e9-importante-para-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Implementa\u00e7\u00e3o conceitual do LPC em C (vis\u00e3o geral)&quot;,&quot;value&quot;:&quot;implementa\u00e7\u00e3o-conceitual-do-lpc-em-c-vis\u00e3o-geral&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo em C \u2014 c\u00e1lculo da autocorrela\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;exemplo-em-c-c\u00e1lculo-da-autocorrela\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Observa\u00e7\u00f5es pr\u00e1ticas para sistemas embarcados&quot;,&quot;value&quot;:&quot;observa\u00e7\u00f5es-pr\u00e1ticas-para-sistemas-embarcados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2 \u2014 LPCC (Linear Prediction Cepstral Coefficients)&quot;,&quot;value&quot;:&quot;2-lpcc-linear-prediction-cepstral-coefficients&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa LPCC&quot;,&quot;value&quot;:&quot;o-que-significa-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que \u00e9 o dom\u00ednio cepstral (intui\u00e7\u00e3o)&quot;,&quot;value&quot;:&quot;o-que-\u00e9-o-dom\u00ednio-cepstral-intui\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o matem\u00e1tica entre LPC e LPCC&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-matem\u00e1tica-entre-lpc-e-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que LPCC \u00e9 prefer\u00edvel ao LPC em Machine Learning&quot;,&quot;value&quot;:&quot;por-que-lpcc-\u00e9-prefer\u00edvel-ao-lpc-em-machine-learning&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Implementa\u00e7\u00e3o em C \u2014 LPC \u2192 LPCC&quot;,&quot;value&quot;:&quot;implementa\u00e7\u00e3o-em-c-lpc-\u2192-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Observa\u00e7\u00f5es importantes sobre o c\u00f3digo&quot;,&quot;value&quot;:&quot;observa\u00e7\u00f5es-importantes-sobre-o-c\u00f3digo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Complexidade computacional&quot;,&quot;value&quot;:&quot;complexidade-computacional&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;3 \u2014 CEPSTRUM&quot;,&quot;value&quot;:&quot;3-cepstrum&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa Cepstrum&quot;,&quot;value&quot;:&quot;o-que-significa-cepstrum&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Intui\u00e7\u00e3o f\u00edsica do Cepstrum&quot;,&quot;value&quot;:&quot;intui\u00e7\u00e3o-f\u00edsica-do-cepstrum&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Cepstrum \u201ccl\u00e1ssico\u201d vs Cepstrum via LPC&quot;,&quot;value&quot;:&quot;cepstrum-cl\u00e1ssico-vs-cepstrum-via-lpc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;1. Cepstrum via FFT (cepstrum cl\u00e1ssico)&quot;,&quot;value&quot;:&quot;1-cepstrum-via-fft-cepstrum-cl\u00e1ssico&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2. Cepstrum via LPC (LPCC)&quot;,&quot;value&quot;:&quot;2-cepstrum-via-lpc-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que o Cepstrum \u00e9 t\u00e3o poderoso&quot;,&quot;value&quot;:&quot;por-que-o-cepstrum-\u00e9-t\u00e3o-poderoso&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Quefr\u00eancia: interpreta\u00e7\u00e3o correta&quot;,&quot;value&quot;:&quot;quefr\u00eancia-interpreta\u00e7\u00e3o-correta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conex\u00e3o direta com LPCC&quot;,&quot;value&quot;:&quot;conex\u00e3o-direta-com-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4 \u2014 LP (Linear Prediction)&quot;,&quot;value&quot;:&quot;4-lp-linear-prediction&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa LP&quot;,&quot;value&quot;:&quot;o-que-significa-lp&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Predi\u00e7\u00e3o linear como modelo autoregressivo (AR)&quot;,&quot;value&quot;:&quot;predi\u00e7\u00e3o-linear-como-modelo-autoregressivo-ar&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpreta\u00e7\u00e3o como filtro digital&quot;,&quot;value&quot;:&quot;interpreta\u00e7\u00e3o-como-filtro-digital&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estabilidade do modelo LP&quot;,&quot;value&quot;:&quot;estabilidade-do-modelo-lp&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Escolha da ordem do modelo (p)&quot;,&quot;value&quot;:&quot;escolha-da-ordem-do-modelo-p&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o direta entre LP, LPC e LPCC&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-direta-entre-lp-lpc-e-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo conceitual em C \u2014 erro de predi\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;exemplo-conceitual-em-c-erro-de-predi\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5 \u2014 AC (Autocorrelation)&quot;,&quot;value&quot;:&quot;5-ac-autocorrelation&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa AC&quot;,&quot;value&quot;:&quot;o-que-significa-ac&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Defini\u00e7\u00e3o matem\u00e1tica da autocorrela\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;defini\u00e7\u00e3o-matem\u00e1tica-da-autocorrela\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que a autocorrela\u00e7\u00e3o \u00e9 usada em LPC&quot;,&quot;value&quot;:&quot;por-que-a-autocorrela\u00e7\u00e3o-\u00e9-usada-em-lpc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;1. Garante estabilidade do filtro LPC&quot;,&quot;value&quot;:&quot;1-garante-estabilidade-do-filtro-lpc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2. Reduz sensibilidade a ru\u00eddo&quot;,&quot;value&quot;:&quot;2-reduz-sensibilidade-a-ru\u00eddo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;3. Conecta LP a m\u00ednimos quadrados&quot;,&quot;value&quot;:&quot;3-conecta-lp-a-m\u00ednimos-quadrados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Equa\u00e7\u00f5es de Yule-Walker&quot;,&quot;value&quot;:&quot;equa\u00e7\u00f5es-de-yule-walker&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica da autocorrela\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;interpreta\u00e7\u00e3o-f\u00edsica-da-autocorrela\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Autocorrela\u00e7\u00e3o e estacionariedade&quot;,&quot;value&quot;:&quot;autocorrela\u00e7\u00e3o-e-estacionariedade&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Implementa\u00e7\u00e3o em C \u2014 autocorrela\u00e7\u00e3o (revis\u00e3o pr\u00e1tica)&quot;,&quot;value&quot;:&quot;implementa\u00e7\u00e3o-em-c-autocorrela\u00e7\u00e3o-revis\u00e3o-pr\u00e1tica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Consequ\u00eancias pr\u00e1ticas em sistemas embarcados&quot;,&quot;value&quot;:&quot;consequ\u00eancias-pr\u00e1ticas-em-sistemas-embarcados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6 \u2014 LDA (Levinson\u2013Durbin Algorithm)&quot;,&quot;value&quot;:&quot;6-lda-levinsondurbin-algorithm&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa LDA neste contexto&quot;,&quot;value&quot;:&quot;o-que-significa-lda-neste-contexto&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que Levinson\u2013Durbin \u00e9 essencial&quot;,&quot;value&quot;:&quot;por-que-levinsondurbin-\u00e9-essencial&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estrutura recursiva do algoritmo&quot;,&quot;value&quot;:&quot;estrutura-recursiva-do-algoritmo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica do coeficiente de reflex\u00e3o&quot;,&quot;value&quot;:&quot;interpreta\u00e7\u00e3o-f\u00edsica-do-coeficiente-de-reflex\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Implementa\u00e7\u00e3o completa em C \u2014 Levinson\u2013Durbin&quot;,&quot;value&quot;:&quot;implementa\u00e7\u00e3o-completa-em-c-levinsondurbin&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Observa\u00e7\u00f5es importantes sobre o c\u00f3digo&quot;,&quot;value&quot;:&quot;observa\u00e7\u00f5es-importantes-sobre-o-c\u00f3digo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Papel do Levinson\u2013Durbin no pipeline completo&quot;,&quot;value&quot;:&quot;papel-do-levinsondurbin-no-pipeline-completo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7 \u2014 PE (Prediction Error)&quot;,&quot;value&quot;:&quot;7-pe-prediction-error&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa PE&quot;,&quot;value&quot;:&quot;o-que-significa-pe&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Energia do erro de predi\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;energia-do-erro-de-predi\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpreta\u00e7\u00e3o f\u00edsica do erro de predi\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;interpreta\u00e7\u00e3o-f\u00edsica-do-erro-de-predi\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Em fala&quot;,&quot;value&quot;:&quot;em-fala&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Em vibra\u00e7\u00e3o mec\u00e2nica&quot;,&quot;value&quot;:&quot;em-vibra\u00e7\u00e3o-mec\u00e2nica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o direta entre PE e LPCC (coeficiente c\u2080)&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-direta-entre-pe-e-lpcc-coeficiente-c\u2080&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PE como m\u00e9trica de qualidade do modelo&quot;,&quot;value&quot;:&quot;pe-como-m\u00e9trica-de-qualidade-do-modelo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo em C \u2014 c\u00e1lculo expl\u00edcito do erro m\u00e9dio&quot;,&quot;value&quot;:&quot;exemplo-em-c-c\u00e1lculo-expl\u00edcito-do-erro-m\u00e9dio&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PE e estabilidade num\u00e9rica&quot;,&quot;value&quot;:&quot;pe-e-estabilidade-num\u00e9rica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o final no pipeline&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-final-no-pipeline&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o desta se\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;conclus\u00e3o-desta-se\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;8 \u2014 LPCC Extraction Pipeline (Pipeline de Extra\u00e7\u00e3o de LPCC)&quot;,&quot;value&quot;:&quot;8-lpcc-extraction-pipeline-pipeline-de-extra\u00e7\u00e3o-de-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Vis\u00e3o geral do pipeline&quot;,&quot;value&quot;:&quot;vis\u00e3o-geral-do-pipeline&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Etapa 1 \u2014 Janelamento do sinal&quot;,&quot;value&quot;:&quot;etapa-1-janelamento-do-sinal&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Etapa 2 \u2014 Autocorrela\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;etapa-2-autocorrela\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Etapa 3 \u2014 Levinson\u2013Durbin&quot;,&quot;value&quot;:&quot;etapa-3-levinsondurbin&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Etapa 4 \u2014 Convers\u00e3o LPC \u2192 LPCC&quot;,&quot;value&quot;:&quot;etapa-4-convers\u00e3o-lpc-\u2192-lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Etapa 5 \u2014 Vetor de caracter\u00edsticas&quot;,&quot;value&quot;:&quot;etapa-5-vetor-de-caracter\u00edsticas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo completo \u2014 pipeline integrado em C&quot;,&quot;value&quot;:&quot;exemplo-completo-pipeline-integrado-em-c&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Considera\u00e7\u00f5es num\u00e9ricas e de engenharia&quot;,&quot;value&quot;:&quot;considera\u00e7\u00f5es-num\u00e9ricas-e-de-engenharia&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;9 \u2014 LPCC \u00d7 MFCC (Compara\u00e7\u00e3o Conceitual e Pr\u00e1tica)&quot;,&quot;value&quot;:&quot;9-lpcc-\u00d7-mfcc-compara\u00e7\u00e3o-conceitual-e-pr\u00e1tica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que significa MFCC&quot;,&quot;value&quot;:&quot;o-que-significa-mfcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Diferen\u00e7a filos\u00f3fica entre LPCC e MFCC&quot;,&quot;value&quot;:&quot;diferen\u00e7a-filos\u00f3fica-entre-lpcc-e-mfcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;LPCC \u2014 modelo f\u00edsico\/matem\u00e1tico&quot;,&quot;value&quot;:&quot;lpcc-modelo-f\u00edsicomatem\u00e1tico&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;MFCC \u2014 modelo perceptual&quot;,&quot;value&quot;:&quot;mfcc-modelo-perceptual&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Pipeline comparativo&quot;,&quot;value&quot;:&quot;pipeline-comparativo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;LPCC&quot;,&quot;value&quot;:&quot;lpcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;MFCC&quot;,&quot;value&quot;:&quot;mfcc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Complexidade computacional&quot;,&quot;value&quot;:&quot;complexidade-computacional&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sensibilidade a ru\u00eddo e n\u00e3o-linearidades&quot;,&quot;value&quot;:&quot;sensibilidade-a-ru\u00eddo-e-n\u00e3o-linearidades&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpretabilidade dos coeficientes&quot;,&quot;value&quot;:&quot;interpretabilidade-dos-coeficientes&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo pr\u00e1tico de escolha&quot;,&quot;value&quot;:&quot;exemplo-pr\u00e1tico-de-escolha&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Ponto cr\u00edtico raramente discutido&quot;,&quot;value&quot;:&quot;ponto-cr\u00edtico-raramente-discutido&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;10 \u2014 Aplica\u00e7\u00f5es do LPCC (Linear Prediction Cepstral Coefficients)&quot;,&quot;value&quot;:&quot;10-aplica\u00e7\u00f5es-do-lpcc-linear-prediction-cepstral-coefficients&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que LPCC \u00e9 usado na pr\u00e1tica&quot;,&quot;value&quot;:&quot;por-que-lpcc-\u00e9-usado-na-pr\u00e1tica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;1. Reconhecimento e classifica\u00e7\u00e3o de fala (cl\u00e1ssico)&quot;,&quot;value&quot;:&quot;1-reconhecimento-e-classifica\u00e7\u00e3o-de-fala-cl\u00e1ssico&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2. Diagn\u00f3stico vibroac\u00fastico e monitoramento de condi\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;2-diagn\u00f3stico-vibroac\u00fastico-e-monitoramento-de-condi\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;3. Detec\u00e7\u00e3o de anomalias (Anomaly Detection)&quot;,&quot;value&quot;:&quot;3-detec\u00e7\u00e3o-de-anomalias-anomaly-detection&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4. Classifica\u00e7\u00e3o com Machine Learning cl\u00e1ssico&quot;,&quot;value&quot;:&quot;4-classifica\u00e7\u00e3o-com-machine-learning-cl\u00e1ssico&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5. Monitoramento em tempo real (edge \/ firmware)&quot;,&quot;value&quot;:&quot;5-monitoramento-em-tempo-real-edge-firmware&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6. Aplica\u00e7\u00f5es em energia e eletromagnetismo&quot;,&quot;value&quot;:&quot;6-aplica\u00e7\u00f5es-em-energia-e-eletromagnetismo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7. Por que LPCC \u00e9 subestimado hoje&quot;,&quot;value&quot;:&quot;7-por-que-lpcc-\u00e9-subestimado-hoje&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo conceitual de uso do LPCC em classifica\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;exemplo-conceitual-de-uso-do-lpcc-em-classifica\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o&quot;,&quot;value&quot;:&quot;conclus\u00e3o&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class='eb-toc__list'><li><a href="#1-lpc-linear-predictive-coding">1 — LPC (Linear Predictive Coding)</a><ul class='eb-toc__list'><li><a href="#o-que-significa-lpc">O que significa LPC</a><li><a href="#eb-table-content-2">Intuição física e de sinal</a><li><a href="#eb-table-content-3">Modelo matemático do LPC</a><li><a href="#eb-table-content-4">Por que o LPC é importante para LPCC</a><li><a href="#eb-table-content-5">Implementação conceitual do LPC em C (visão geral)</a><li><a href="#eb-table-content-6">Exemplo em C — cálculo da autocorrelação</a><li><a href="#eb-table-content-7">Observações práticas para sistemas embarcados</a></li></ul><li><a href="#2-lpcc-linear-prediction-cepstral-coefficients">2 — LPCC (Linear Prediction Cepstral Coefficients)</a><ul class='eb-toc__list'><li><a href="#o-que-significa-lpcc">O que significa LPCC</a><li><a href="#eb-table-content-10">O que é o domínio cepstral (intuição)</a><li><a href="#eb-table-content-11">Relação matemática entre LPC e LPCC</a><li><a href="#eb-table-content-12">Por que LPCC é preferível ao LPC em Machine Learning</a><li><a href="#eb-table-content-13">Implementação em C — LPC → LPCC</a><li><a href="#eb-table-content-14">Observações importantes sobre o código</a><li><a href="#complexidade-computacional">Complexidade computacional</a></li></ul><li><a href="#3-cepstrum">3 — CEPSTRUM</a><ul class='eb-toc__list'><li><a href="#o-que-significa-cepstrum">O que significa Cepstrum</a><li><a href="#eb-table-content-18">Intuição física do Cepstrum</a><li><a href="#eb-table-content-19">Cepstrum “clássico” vs Cepstrum via LPC</a><ul class='eb-toc__list'><li><a href="#eb-table-content-20">1. Cepstrum via FFT (cepstrum clássico)</a><li><a href="#2-cepstrum-via-lpc-lpcc">2. Cepstrum via LPC (LPCC)</a></li></ul><li><a href="#eb-table-content-22">Por que o Cepstrum é tão poderoso</a><li><a href="#eb-table-content-23">Quefrência: interpretação correta</a><li><a href="#eb-table-content-24">Conexão direta com LPCC</a></li></ul><li><a href="#4-lp-linear-prediction">4 — LP (Linear Prediction)</a><ul class='eb-toc__list'><li><a href="#o-que-significa-lp">O que significa LP</a><li><a href="#eb-table-content-27">Predição linear como modelo autoregressivo (AR)</a><li><a href="#eb-table-content-28">Interpretação como filtro digital</a><li><a href="#estabilidade-do-modelo-lp">Estabilidade do modelo LP</a><li><a href="#escolha-da-ordem-do-modelo-p">Escolha da ordem do modelo (p)</a><li><a href="#eb-table-content-31">Relação direta entre LP, LPC e LPCC</a><li><a href="#eb-table-content-32">Exemplo conceitual em C — erro de predição</a></li></ul><li><a href="#5-ac-autocorrelation">5 — AC (Autocorrelation)</a><ul class='eb-toc__list'><li><a href="#o-que-significa-ac">O que significa AC</a><li><a href="#eb-table-content-35">Definição matemática da autocorrelação</a><li><a href="#eb-table-content-36">Por que a autocorrelação é usada em LPC</a><ul class='eb-toc__list'><li><a href="#1-garante-estabilidade-do-filtro-lpc">1. Garante estabilidade do filtro LPC</a><li><a href="#eb-table-content-38">2. Reduz sensibilidade a ruído</a><li><a href="#eb-table-content-39">3. Conecta LP a mínimos quadrados</a></li></ul><li><a href="#eb-table-content-40">Equações de Yule-Walker</a><li><a href="#eb-table-content-41">Interpretação física da autocorrelação</a><li><a href="#eb-table-content-42">Autocorrelação e estacionariedade</a><li><a href="#eb-table-content-43">Implementação em C — autocorrelação (revisão prática)</a><li><a href="#eb-table-content-44">Consequências práticas em sistemas embarcados</a></li></ul><li><a href="#6-lda-levinsondurbin-algorithm">6 — LDA (Levinson–Durbin Algorithm)</a><ul class='eb-toc__list'><li><a href="#o-que-significa-lda-neste-contexto">O que significa LDA neste contexto</a><li><a href="#eb-table-content-47">Por que Levinson–Durbin é essencial</a><li><a href="#estrutura-recursiva-do-algoritmo">Estrutura recursiva do algoritmo</a><li><a href="#eb-table-content-49">Interpretação física do coeficiente de reflexão</a><li><a href="#eb-table-content-50">Implementação completa em C — Levinson–Durbin</a><li><a href="#eb-table-content-51">Observações importantes sobre o código</a><li><a href="#papel-do-levinsondurbin-no-pipeline-completo">Papel do Levinson–Durbin no pipeline completo</a></li></ul><li><a href="#7-pe-prediction-error">7 — PE (Prediction Error)</a><ul class='eb-toc__list'><li><a href="#o-que-significa-pe">O que significa PE</a><li><a href="#eb-table-content-55">Energia do erro de predição</a><li><a href="#eb-table-content-56">Interpretação física do erro de predição</a><ul class='eb-toc__list'><li><a href="#em-fala">Em fala</a><li><a href="#eb-table-content-58">Em vibração mecânica</a></li></ul><li><a href="#eb-table-content-59">Relação direta entre PE e LPCC (coeficiente c₀)</a><li><a href="#eb-table-content-60">PE como métrica de qualidade do modelo</a><li><a href="#eb-table-content-61">Exemplo em C — cálculo explícito do erro médio</a><li><a href="#eb-table-content-62">PE e estabilidade numérica</a><li><a href="#eb-table-content-63">Relação final no pipeline</a><li><a href="#eb-table-content-64">Conclusão desta seção</a></li></ul><li><a href="#eb-table-content-65">8 — LPCC Extraction Pipeline (Pipeline de Extração de LPCC)</a><ul class='eb-toc__list'><li><a href="#eb-table-content-66">Visão geral do pipeline</a><li><a href="#etapa-1-janelamento-do-sinal">Etapa 1 — Janelamento do sinal</a><li><a href="#eb-table-content-68">Etapa 2 — Autocorrelação</a><li><a href="#etapa-3-levinsondurbin">Etapa 3 — Levinson–Durbin</a><li><a href="#eb-table-content-70">Etapa 4 — Conversão LPC → LPCC</a><li><a href="#eb-table-content-71">Etapa 5 — Vetor de características</a><li><a href="#exemplo-completo-pipeline-integrado-em-c">Exemplo completo — pipeline integrado em C</a><li><a href="#eb-table-content-73">Considerações numéricas e de engenharia</a></li></ul><li><a href="#eb-table-content-74">9 — LPCC × MFCC (Comparação Conceitual e Prática)</a><ul class='eb-toc__list'><li><a href="#o-que-significa-mfcc">O que significa MFCC</a><li><a href="#eb-table-content-76">Diferença filosófica entre LPCC e MFCC</a><ul class='eb-toc__list'><li><a href="#eb-table-content-77">LPCC — modelo físico/matemático</a><li><a href="#mfcc-modelo-perceptual">MFCC — modelo perceptual</a></li></ul><li><a href="#pipeline-comparativo">Pipeline comparativo</a><ul class='eb-toc__list'><li><a href="#lpcc">LPCC</a><li><a href="#mfcc">MFCC</a></li></ul><li><a href="#complexidade-computacional">Complexidade computacional</a><li><a href="#eb-table-content-83">Sensibilidade a ruído e não-linearidades</a><li><a href="#interpretabilidade-dos-coeficientes">Interpretabilidade dos coeficientes</a><li><a href="#eb-table-content-85">Exemplo prático de escolha</a><li><a href="#eb-table-content-86">Ponto crítico raramente discutido</a></li></ul><li><a href="#eb-table-content-87">10 — Aplicações do LPCC (Linear Prediction Cepstral Coefficients)</a><ul class='eb-toc__list'><li><a href="#eb-table-content-88">Por que LPCC é usado na prática</a><li><a href="#eb-table-content-89">1. Reconhecimento e classificação de fala (clássico)</a><li><a href="#eb-table-content-90">2. Diagnóstico vibroacústico e monitoramento de condição</a><li><a href="#eb-table-content-91">3. Detecção de anomalias (Anomaly Detection)</a><li><a href="#eb-table-content-92">4. Classificação com Machine Learning clássico</a><li><a href="#5-monitoramento-em-tempo-real-edge-firmware">5. Monitoramento em tempo real (edge / firmware)</a><li><a href="#eb-table-content-94">6. Aplicações em energia e eletromagnetismo</a><li><a href="#eb-table-content-95">7. Por que LPCC é subestimado hoje</a><li><a href="#eb-table-content-96">Exemplo conceitual de uso do LPCC em classificação</a></li></ul><li><a href="#eb-table-content-97">Conclusão</a></ul></div></div></div></div></div>


<h2 class="wp-block-heading">1 — <strong>LPC (Linear Predictive Coding)</strong></h2>



<h3 class="wp-block-heading">O que significa LPC</h3>



<p><strong>LPC</strong> é o acrônimo de <strong>Linear Predictive Coding</strong> (<em>Codificação Preditiva Linear</em>).<br>Trata-se de um método matemático usado para <strong>modelar sinais</strong>, especialmente sinais de fala e áudio, assumindo que <strong>cada amostra do sinal pode ser aproximada como uma combinação linear de amostras passadas</strong>.</p>



<p>Em termos simples:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>o LPC tenta responder à pergunta<br><em>“Dado o passado recente do sinal, qual é o melhor valor para a próxima amostra?”</em></p>
</blockquote>



<p>Essa ideia é central em processamento de fala, reconhecimento de padrões acústicos e, mais recentemente, em pipelines de <strong>extração de características cepstrais</strong>, como o <strong>LPCC</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Intuição física e de sinal</h3>



<p>No contexto de fala (mas não limitado a ele), o LPC modela o sinal como:</p>



<ul class="wp-block-list">
<li>Uma <strong>fonte de excitação</strong> (ex.: vibração das cordas vocais)</li>



<li>Um <strong>filtro linear</strong> (trato vocal, cavidade acústica, ou sistema ressonante)</li>
</ul>



<p>Matematicamente, o sinal é tratado como a saída de um <strong>filtro tudo-polo (all-pole)</strong> excitado por um sinal simples.</p>



<p>Isso é importante porque:</p>



<ul class="wp-block-list">
<li>Formantes (ressonâncias) aparecem naturalmente nos polos do modelo</li>



<li>O modelo é <strong>compacto</strong>, <strong>computacionalmente eficiente</strong> e <strong>estável</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Modelo matemático do LPC</h3>



<p>O sinal discreto ( x[n] ) é modelado como:</p>



<p>\[<br>x[n] = -\sum_{k=1}^{p} a_k , x[n-k] + e[n]<br>\]



<p>onde:</p>



<ul class="wp-block-list">
<li>\( a_k \) → coeficientes LPC</li>



<li>\( p \) → ordem do modelo</li>



<li>\( e[n] \) → erro de predição (resíduo)</li>
</ul>



<p>O objetivo do LPC é <strong>escolher os coeficientes \( a_k \)</strong> que <strong>minimizam a energia média do erro</strong>.</p>



<p>Isso leva diretamente às <strong>Equações de Yule-Walker</strong>, resolvidas normalmente pelo <strong>algoritmo de Levinson-Durbin</strong> — que veremos em código C mais à frente.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Por que o LPC é importante para LPCC</h3>



<p>Aqui está o ponto-chave que conecta esta seção ao restante do artigo:</p>



<ul class="wp-block-list">
<li><strong>LPCC (Linear Prediction Cepstral Coefficients)</strong> <strong>não existem sem LPC</strong></li>



<li>O LPC fornece:
<ul class="wp-block-list">
<li>Os <strong>coeficientes do filtro</strong></li>



<li>A <strong>estrutura espectral</strong></li>
</ul>
</li>



<li>O LPCC transforma esses coeficientes em um <strong>domínio cepstral</strong>, mais adequado para:
<ul class="wp-block-list">
<li>Reconhecimento de padrões</li>



<li>Classificação</li>



<li>Machine Learning clássico</li>
</ul>
</li>
</ul>



<p>Ou seja:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>LPC modela o sistema</strong><br><strong>LPCC descreve o sistema</strong></p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Implementação conceitual do LPC em C (visão geral)</h3>



<p>Antes do código completo, o pipeline típico em C é:</p>



<ol class="wp-block-list">
<li>Janela do sinal (ex.: Hamming)</li>



<li>Cálculo da autocorrelação</li>



<li>Levinson-Durbin → coeficientes LPC</li>



<li>Conversão LPC → LPCC (próxima seção futura)</li>
</ol>



<p>Nesta seção, focamos apenas no <strong>LPC puro</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Exemplo em C — cálculo da autocorrelação</h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>#include &lt;stddef.h>

/**
 * Calcula a autocorrelação de um sinal
 * x      : sinal de entrada
 * N      : número de amostras
 * p      : ordem LPC
 * r      : vetor de autocorrelação (tamanho p+1)
 */
void autocorrelation(const float *x, size_t N, size_t p, float *r)
{
    for (size_t k = 0; k &lt;= p; k++) {
        r&#91;k&#93; = 0.0f;
        for (size_t n = k; n &lt; N; n++) {
            r&#91;k&#93; += x&#91;n&#93; * x&#91;n - k&#93;;
        }
    }
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">#include &lt;stddef.h&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">/**</span></span>
<span class="line"><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">*</span><span style="color: #D8DEE9FF"> Calcula a autocorrelação de um sinal</span></span>
<span class="line"><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">*</span><span style="color: #D8DEE9FF"> x      : sinal de entrada</span></span>
<span class="line"><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">*</span><span style="color: #D8DEE9FF"> N      : número de amostras</span></span>
<span class="line"><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">*</span><span style="color: #D8DEE9FF"> p      : ordem LPC</span></span>
<span class="line"><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">*</span><span style="color: #D8DEE9FF"> r      : vetor de autocorrelação (tamanho p+1)</span></span>
<span class="line"><span style="color: #D8DEE9FF"> */</span></span>
<span class="line"><span style="color: #D8DEE9FF">void autocorrelation(const float *x, size_t N, size_t p, float *r)</span></span>
<span class="line"><span style="color: #D8DEE9FF">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    for (size_t k = 0; k &lt;= p; k++) {</span></span>
<span class="line"><span style="color: #D8DEE9FF">        r</span><span style="color: #ECEFF4">&#91;</span><span style="color: #88C0D0">k</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> = 0.0f;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        for (size_t n = k; n &lt; N; n++) {</span></span>
<span class="line"><span style="color: #D8DEE9FF">            r</span><span style="color: #ECEFF4">&#91;</span><span style="color: #88C0D0">k</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> += x</span><span style="color: #ECEFF4">&#91;</span><span style="color: #88C0D0">n</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> * x&#91;n - k&#93;;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        }</span></span>
<span class="line"><span style="color: #D8DEE9FF">    }</span></span>
<span class="line"><span style="color: #D8DEE9FF">}</span></span>
<span class="line"></span></code></pre></div>



<p>Esse vetor <code>r[k]</code> é exatamente o que alimenta o algoritmo de <strong>Levinson-Durbin</strong>, que gera os coeficientes LPC.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Observações práticas para sistemas embarcados</h3>



<p>Do ponto de vista de firmware e IoT:</p>



<ul class="wp-block-list">
<li>LPC é <strong>extremamente viável</strong> em microcontroladores</li>



<li>Complexidade: ( O(p^2) )</li>



<li>Pode ser executado:
<ul class="wp-block-list">
<li>Em <strong>tempo real</strong></li>



<li>Com <strong>DMA + buffers circulares</strong></li>



<li>Integrado a pipelines FreeRTOS ou Zephyr</li>
</ul>
</li>
</ul>



<p>Isso explica por que LPC/LPCC ainda são relevantes mesmo em tempos de deep learning.</p><p>The post <a href="https://mcu.tec.br/algoritimos/dsp/lpcc-linear-prediction-cepstral-coefficients-fundamentos-algoritmos-e-aplicacoes-em-sistemas-embarcados/">LPCC (Linear Prediction Cepstral Coefficients): Fundamentos, Algoritmos e Aplicações em Sistemas Embarcados</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mcu.tec.br/algoritimos/dsp/lpcc-linear-prediction-cepstral-coefficients-fundamentos-algoritmos-e-aplicacoes-em-sistemas-embarcados/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1254</post-id>	</item>
		<item>
		<title>Espectros Eletromagnéticos na Engenharia: UV, Visível, NIR e SWIR e Onde Usá-los</title>
		<link>https://mcu.tec.br/sensores/espectros-eletromagneticos-na-engenharia-uv-visivel-nir-e-swir-e-onde-usa-los/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=espectros-eletromagneticos-na-engenharia-uv-visivel-nir-e-swir-e-onde-usa-los</link>
					<comments>https://mcu.tec.br/sensores/espectros-eletromagneticos-na-engenharia-uv-visivel-nir-e-swir-e-onde-usa-los/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Fri, 30 Jan 2026 13:28:21 +0000</pubDate>
				<category><![CDATA[Sensores]]></category>
		<category><![CDATA[agricultura de precisão]]></category>
		<category><![CDATA[câmeras multiespectrais]]></category>
		<category><![CDATA[edge computing]]></category>
		<category><![CDATA[engenharia eletrônica]]></category>
		<category><![CDATA[espectro eletromagnético]]></category>
		<category><![CDATA[espectro ultravioleta UV]]></category>
		<category><![CDATA[espectro visível]]></category>
		<category><![CDATA[identificação de materiais]]></category>
		<category><![CDATA[imageamento multiespectral]]></category>
		<category><![CDATA[infravermelho de onda curta SWIR]]></category>
		<category><![CDATA[infravermelho próximo NIR]]></category>
		<category><![CDATA[inspeção industrial]]></category>
		<category><![CDATA[iot industrial]]></category>
		<category><![CDATA[processamento de sinais]]></category>
		<category><![CDATA[sensores ópticos]]></category>
		<category><![CDATA[sensoriamento óptico]]></category>
		<category><![CDATA[sistemas embarcados]]></category>
		<category><![CDATA[visão computacional]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1240</guid>

					<description><![CDATA[<p>Entenda o que são os espectros eletromagnéticos e como eles são aplicados na engenharia moderna. Este artigo apresenta, de forma técnica e didática, as principais faixas espectrais utilizadas em sistemas embarcados, visão computacional, IoT e inspeção industrial, incluindo ultravioleta (UV), espectro visível, infravermelho próximo (NIR) e infravermelho de onda curta (SWIR). O texto explica os fundamentos físicos de cada espectro, suas interações com os materiais, limitações técnicas, tipos de sensores envolvidos e critérios práticos de escolha para projetos reais. Também são discutidas combinações espectrais, impactos no processamento de sinais e na inteligência artificial embarcada, além de diretrizes de engenharia que ajudam a decidir qual espectro utilizar em aplicações como agricultura de precisão, inspeção industrial, robótica, monitoramento ambiental e identificação de materiais. Um guia essencial para engenheiros, desenvolvedores e pesquisadores que desejam projetar sistemas mais eficientes, robustos e fisicamente fundamentados.</p>
<p>The post <a href="https://mcu.tec.br/sensores/espectros-eletromagneticos-na-engenharia-uv-visivel-nir-e-swir-e-onde-usa-los/">Espectros Eletromagnéticos na Engenharia: UV, Visível, NIR e SWIR e Onde Usá-los</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-hd1kz wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-hd1kz "><div class="eb-toc-container eb-toc-hd1kz  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemCollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;1 \u2014 Espectro Ultravioleta (UV): fundamentos f\u00edsicos e aplica\u00e7\u00f5es&quot;,&quot;text&quot;:&quot;1 \u2014 Espectro Ultravioleta (UV): fundamentos f\u00edsicos e aplica\u00e7\u00f5es&quot;,&quot;link&quot;:&quot;eb-table-content-0&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;2 \u2014 Espectro Vis\u00edvel: percep\u00e7\u00e3o humana, limites f\u00edsicos e aplica\u00e7\u00f5es&quot;,&quot;text&quot;:&quot;2 \u2014 Espectro Vis\u00edvel: percep\u00e7\u00e3o humana, limites f\u00edsicos e aplica\u00e7\u00f5es&quot;,&quot;link&quot;:&quot;eb-table-content-1&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;3 \u2014 NIR (Infravermelho Pr\u00f3ximo): propriedades f\u00edsicas e aplica\u00e7\u00f5es estrat\u00e9gicas&quot;,&quot;text&quot;:&quot;3 \u2014 NIR (Infravermelho Pr\u00f3ximo): propriedades f\u00edsicas e aplica\u00e7\u00f5es estrat\u00e9gicas&quot;,&quot;link&quot;:&quot;eb-table-content-2&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;4 \u2014 SWIR (Infravermelho de Onda Curta): identifica\u00e7\u00e3o de materiais e composi\u00e7\u00e3o qu\u00edmica&quot;,&quot;text&quot;:&quot;4 \u2014 SWIR (Infravermelho de Onda Curta): identifica\u00e7\u00e3o de materiais e composi\u00e7\u00e3o qu\u00edmica&quot;,&quot;link&quot;:&quot;eb-table-content-3&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;5 \u2014 Combina\u00e7\u00f5es espectrais e crit\u00e9rios de escolha em projetos reais&quot;,&quot;text&quot;:&quot;5 \u2014 Combina\u00e7\u00f5es espectrais e crit\u00e9rios de escolha em projetos reais&quot;,&quot;link&quot;:&quot;eb-table-content-4&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;6 \u2014 Diretrizes pr\u00e1ticas para escolha do espectro em sistemas embarcados, IoT e vis\u00e3o computacional&quot;,&quot;text&quot;:&quot;6 \u2014 Diretrizes pr\u00e1ticas para escolha do espectro em sistemas embarcados, IoT e vis\u00e3o computacional&quot;,&quot;link&quot;:&quot;eb-table-content-5&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;7 \u2014 Impactos da escolha espectral em algoritmos, IA embarcada e processamento de sinais&quot;,&quot;text&quot;:&quot;7 \u2014 Impactos da escolha espectral em algoritmos, IA embarcada e processamento de sinais&quot;,&quot;link&quot;:&quot;7-impactos-da-escolha-espectral-em-algoritmos-ia-embarcada-e-processamento-de-sinais&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Conclus\u00e3o \u2014 Espectros como decis\u00e3o de engenharia, n\u00e3o como detalhe \u00f3ptico&quot;,&quot;text&quot;:&quot;Conclus\u00e3o \u2014 Espectros como decis\u00e3o de engenharia, n\u00e3o como detalhe \u00f3ptico&quot;,&quot;link&quot;:&quot;eb-table-content-7&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;1 \u2014 Espectro Ultravioleta (UV): fundamentos f\u00edsicos e aplica\u00e7\u00f5es&quot;,&quot;value&quot;:&quot;1-espectro-ultravioleta-uv-fundamentos-f\u00edsicos-e-aplica\u00e7\u00f5es&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2 \u2014 Espectro Vis\u00edvel: percep\u00e7\u00e3o humana, limites f\u00edsicos e aplica\u00e7\u00f5es&quot;,&quot;value&quot;:&quot;2-espectro-vis\u00edvel-percep\u00e7\u00e3o-humana-limites-f\u00edsicos-e-aplica\u00e7\u00f5es&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;3 \u2014 NIR (Infravermelho Pr\u00f3ximo): propriedades f\u00edsicas e aplica\u00e7\u00f5es estrat\u00e9gicas&quot;,&quot;value&quot;:&quot;3-nir-infravermelho-pr\u00f3ximo-propriedades-f\u00edsicas-e-aplica\u00e7\u00f5es-estrat\u00e9gicas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4 \u2014 SWIR (Infravermelho de Onda Curta): identifica\u00e7\u00e3o de materiais e composi\u00e7\u00e3o qu\u00edmica&quot;,&quot;value&quot;:&quot;4-swir-infravermelho-de-onda-curta-identifica\u00e7\u00e3o-de-materiais-e-composi\u00e7\u00e3o-qu\u00edmica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5 \u2014 Combina\u00e7\u00f5es espectrais e crit\u00e9rios de escolha em projetos reais&quot;,&quot;value&quot;:&quot;5-combina\u00e7\u00f5es-espectrais-e-crit\u00e9rios-de-escolha-em-projetos-reais&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6 \u2014 Diretrizes pr\u00e1ticas para escolha do espectro em sistemas embarcados, IoT e vis\u00e3o computacional&quot;,&quot;value&quot;:&quot;6-diretrizes-pr\u00e1ticas-para-escolha-do-espectro-em-sistemas-embarcados-iot-e-vis\u00e3o-computacional&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;7 \u2014 Impactos da escolha espectral em algoritmos, IA embarcada e processamento de sinais&quot;,&quot;value&quot;:&quot;7-impactos-da-escolha-espectral-em-algoritmos-ia-embarcada-e-processamento-de-sinais&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o \u2014 Espectros como decis\u00e3o de engenharia, n\u00e3o como detalhe \u00f3ptico&quot;,&quot;value&quot;:&quot;conclus\u00e3o-espectros-como-decis\u00e3o-de-engenharia-n\u00e3o-como-detalhe-\u00f3ptico&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class='eb-toc__list'><li><a href="#eb-table-content-0">1 — Espectro Ultravioleta (UV): fundamentos físicos e aplicações</a><li><a href="#eb-table-content-1">2 — Espectro Visível: percepção humana, limites físicos e aplicações</a><li><a href="#eb-table-content-2">3 — NIR (Infravermelho Próximo): propriedades físicas e aplicações estratégicas</a><li><a href="#eb-table-content-3">4 — SWIR (Infravermelho de Onda Curta): identificação de materiais e composição química</a><li><a href="#eb-table-content-4">5 — Combinações espectrais e critérios de escolha em projetos reais</a><li><a href="#eb-table-content-5">6 — Diretrizes práticas para escolha do espectro em sistemas embarcados, IoT e visão computacional</a><li><a href="#7-impactos-da-escolha-espectral-em-algoritmos-ia-embarcada-e-processamento-de-sinais">7 — Impactos da escolha espectral em algoritmos, IA embarcada e processamento de sinais</a><li><a href="#eb-table-content-7">Conclusão — Espectros como decisão de engenharia, não como detalhe óptico</a></ul></div></div></div></div></div>


<p>O que são espectros e por que eles importam</p>



<p>Quando falamos em <strong>espectros</strong>, estamos nos referindo às diferentes <strong>faixas do espectro eletromagnético</strong>, organizadas de acordo com o comprimento de onda (λ) ou frequência da radiação. Embora o ser humano esteja limitado à percepção do <strong>espectro visível</strong>, a física nos mostra que a luz é apenas uma pequena janela de um universo muito mais amplo de interações eletromagnéticas. Cada uma dessas faixas carrega informações físicas distintas sobre os materiais, o ambiente e os fenômenos observados.</p>



<p>Do ponto de vista de engenharia — especialmente em <strong>sistemas embarcados, sensoriamento, visão computacional, IoT e instrumentação</strong> — compreender os espectros não é um luxo acadêmico, mas uma <strong>decisão de projeto</strong>. A escolha entre UV, Visível, NIR ou SWIR define diretamente o tipo de sensor, a óptica, o custo do sistema, o consumo energético e, principalmente, <strong>qual fenômeno físico será detectado</strong>. Em muitos casos, mudar a faixa espectral é mais eficiente do que aplicar algoritmos complexos sobre dados inadequados.</p>



<p>Este artigo tem como objetivo apresentar, de forma <strong>didática e técnica</strong>, o que são os principais espectros usados em aplicações modernas — <strong>UV, Visível, NIR e SWIR</strong>, além de suas combinações — explicando <strong>onde e por que cada um deve ser utilizado</strong>. A proposta não é apenas descrever faixas de comprimento de onda, mas conectar cada espectro às <strong>aplicações reais</strong>, aos <strong>sensores disponíveis</strong> e às <strong>decisões de arquitetura</strong> em sistemas embarcados e industriais.</p><p>The post <a href="https://mcu.tec.br/sensores/espectros-eletromagneticos-na-engenharia-uv-visivel-nir-e-swir-e-onde-usa-los/">Espectros Eletromagnéticos na Engenharia: UV, Visível, NIR e SWIR e Onde Usá-los</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mcu.tec.br/sensores/espectros-eletromagneticos-na-engenharia-uv-visivel-nir-e-swir-e-onde-usa-los/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1240</post-id>	</item>
		<item>
		<title>Detecção de Anomalias em Sistemas Embarcados: Isolation Forest, One-Class SVM e PCA com Exemplos Práticos</title>
		<link>https://mcu.tec.br/algoritimos/deteccao-de-anomalias-em-sistemas-embarcados-isolation-forest-one-class-svm-e-pca-com-exemplos-praticos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=deteccao-de-anomalias-em-sistemas-embarcados-isolation-forest-one-class-svm-e-pca-com-exemplos-praticos</link>
					<comments>https://mcu.tec.br/algoritimos/deteccao-de-anomalias-em-sistemas-embarcados-isolation-forest-one-class-svm-e-pca-com-exemplos-praticos/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Tue, 02 Dec 2025 14:11:15 +0000</pubDate>
				<category><![CDATA[Algoritimos]]></category>
		<category><![CDATA[algoritmos de anomalia]]></category>
		<category><![CDATA[análise de vibração]]></category>
		<category><![CDATA[anomalias em sensores]]></category>
		<category><![CDATA[aprendizado de máquina em microcontroladores]]></category>
		<category><![CDATA[detecção de anomalias]]></category>
		<category><![CDATA[diagnóstico inteligente]]></category>
		<category><![CDATA[inteligência artificial embarcada]]></category>
		<category><![CDATA[iot industrial]]></category>
		<category><![CDATA[isolation forest]]></category>
		<category><![CDATA[machine learning embarcado]]></category>
		<category><![CDATA[manutenção preditiva]]></category>
		<category><![CDATA[one-class svm]]></category>
		<category><![CDATA[pca embarcado]]></category>
		<category><![CDATA[sistemas embarcados]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=944</guid>

					<description><![CDATA[<p>A detecção de anomalias é uma técnica essencial em sistemas embarcados modernos, permitindo identificar falhas, prever problemas e garantir maior confiabilidade em aplicações industriais, IoT e automação. Este artigo explica, de forma clara e didática, como utilizar três dos métodos mais eficazes para esse fim: Isolation Forest, One-Class SVM e PCA. Cada técnica é apresentada com exemplos práticos, códigos em Python e implementações simplificadas em C para microcontroladores como RP2040, ESP32 e STM32. Também discutimos aplicações reais, vantagens de cada abordagem, comparações diretas e boas práticas para implantação em ambientes de baixa potência. Ideal para estudantes, engenheiros e profissionais que buscam implementar detecção inteligente de falhas com eficiência computacional.</p>
<p>The post <a href="https://mcu.tec.br/algoritimos/deteccao-de-anomalias-em-sistemas-embarcados-isolation-forest-one-class-svm-e-pca-com-exemplos-praticos/">Detecção de Anomalias em Sistemas Embarcados: Isolation Forest, One-Class SVM e PCA com Exemplos Práticos</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<h3 class="wp-block-heading"></h3>



<p>Este artigo foi escrito para compor a documentação de justificativas das escolhas de algorítimos para o projeto de conclusão do EmbarcaTech, Rack Inteligente.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>1 — Introdução à Detecção de Anomalias</strong></h2>



<p>A detecção de anomalias é uma técnica fundamental em sistemas inteligentes, especialmente em aplicações embarcadas, onde a capacidade de identificar comportamentos inesperados pode evitar falhas catastróficas, reduzir custos de manutenção e aumentar a confiabilidade de equipamentos. Em termos simples, uma anomalia é qualquer comportamento que se desvia significativamente do padrão habitual — seja uma vibração fora do normal em um transformador, um ruído inesperado em um motor, um pacote estranho em uma rede, ou mesmo uma leitura de sensor fora do perfil típico em um microcontrolador.</p>



<p>Existem três grandes abordagens estatísticas e de aprendizado de máquina amplamente usadas: <strong>Isolation Forest</strong>, <strong>One-Class SVM</strong> e <strong>PCA (Principal Component Analysis)</strong> aplicado para detecção de anomalias. Cada uma utiliza uma estratégia diferente no processo de modelagem, o que é particularmente útil quando queremos embarcar parte do processamento em microcontroladores ou realizar inferência em sistemas híbridos MCU+edge AI.</p>



<p>No contexto embarcado, a detecção de anomalias precisa de métodos eficientes, com baixo custo computacional e que funcionem bem mesmo quando há poucos dados rotulados. Por isso, os algoritmos apresentados neste artigo são especialmente adequados para aplicações como: predição de falhas, filtragem inteligente de dados, diagnóstico vibroacústico, análise de corrente, segurança cibernética embarcada e controle inteligente em malha fechada.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>2 — Isolation Forest</strong></h2>



<p>O Isolation Forest é um algoritmo extremamente eficiente para detecção de anomalias porque trabalha de forma inversa aos métodos tradicionais: enquanto outros modelos tentam aprender <em>o que é normal</em>, o Isolation Forest tenta isolar <em>o que é anômalo</em>. Ele faz isso construindo diversas árvores aleatórias onde, a cada divisão, um subconjunto dos dados é particionado. Como pontos anômalos estão mais afastados do comportamento típico, eles tendem a ser isolados em poucas divisões — o que torna o método rápido e naturalmente escalável, inclusive para execução em hardware limitado.</p>



<p>Do ponto de vista matemático, cada árvore consiste em divisões recursivas sobre atributos escolhidos aleatoriamente. O número de divisões necessárias para isolar um dado ponto define um “caminho”, cuja média entre diversas árvores gera a pontuação de anomalia. Pontos com caminho médio curto são classificados como anômalos. Esse processo reduz significativamente a necessidade de modelos complexos e evita cálculos pesados como matrizes do tipo kernel, o que é uma vantagem para implementações embarcadas.</p>



<p>Em aplicações reais, o Isolation Forest é útil para detectar vibrações incomuns, oscilações de corrente fora do perfil, leituras inconsistentes de sensores, e até anomalias em tráfego de rede. Embora seja mais comum executar o treinamento fora do microcontrolador, é totalmente possível embarcar o processo de inferência, já que cada árvore pode ser representada como uma sequência de comparações simples — rápidas e leves para um Cortex-M7, ESP32 ou até um RP2040.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Exemplo em Python (Treinamento no PC, Inferência Portável para MCU)</strong></h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>from sklearn.ensemble import IsolationForest
import numpy as np

# Dados simulados: comportamento normal (cluster) + anomalias
rng = np.random.RandomState(42)
normal = 0.3 * rng.randn(200, 2)
anomalias = rng.uniform(low=-4, high=4, size=(10, 2))
dados = np.concatenate(&#91;normal, anomalias&#93;, axis=0)

# Treinamento
modelo = IsolationForest(contamination=0.05, random_state=42)
modelo.fit(dados)

# Inferência
teste = np.array([&#91;0.1, 0.2&#93;, &#91;3, 3&#93;])  # normal vs anômalo
pred = modelo.predict(teste)

print(pred)  # saída: &#91;1, -1&#93;  → -1 = anomalia
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sklearn</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">ensemble</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">IsolationForest</span></span>
<span class="line"><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">numpy</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">np</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Dados</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">simulados</span><span style="color: #D8DEE9FF">: </span><span style="color: #8FBCBB">comportamento</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF"> (</span><span style="color: #8FBCBB">cluster</span><span style="color: #D8DEE9FF">) + </span><span style="color: #8FBCBB">anomalias</span></span>
<span class="line"><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">random</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">RandomState</span><span style="color: #D8DEE9FF">(42)</span></span>
<span class="line"><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF"> = 0.3 </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">randn</span><span style="color: #D8DEE9FF">(200</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 2)</span></span>
<span class="line"><span style="color: #8FBCBB">anomalias</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">uniform</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">low</span><span style="color: #D8DEE9FF">=-4</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">high</span><span style="color: #D8DEE9FF">=4</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">size</span><span style="color: #D8DEE9FF">=(10</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 2))</span></span>
<span class="line"><span style="color: #8FBCBB">dados</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">concatenate</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #8FBCBB">normal</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">anomalias</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">axis</span><span style="color: #D8DEE9FF">=0)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Treinamento</span></span>
<span class="line"><span style="color: #8FBCBB">modelo</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">IsolationForest</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">contamination</span><span style="color: #D8DEE9FF">=0.05</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">random_state</span><span style="color: #D8DEE9FF">=42)</span></span>
<span class="line"><span style="color: #8FBCBB">modelo</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">fit</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">dados</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Inferência</span></span>
<span class="line"><span style="color: #8FBCBB">teste</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">array</span><span style="color: #D8DEE9FF">([&#91;0.1</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0.2&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> &#91;3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 3&#93;])  # </span><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">vs</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">anômalo</span></span>
<span class="line"><span style="color: #8FBCBB">pred</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">modelo</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">predict</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">teste</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">pred</span><span style="color: #D8DEE9FF">)  # </span><span style="color: #8FBCBB">saída</span><span style="color: #D8DEE9FF">: &#91;1</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> -1&#93;  → -1 = </span><span style="color: #8FBCBB">anomalia</span></span>
<span class="line"></span></code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Exemplo Embarcado (C) — Inferência de uma Árvore Simplificada</strong></h3>



<p>Este exemplo representa <em>uma única árvore</em> já convertida para C (deploy embarcado). Imagine que a árvore aprendida gerou as condições:</p>



<ul class="wp-block-list">
<li>if x₀ &lt; 0.25 → vá para esquerda</li>



<li>else → vá para direita</li>



<li>se x₁ > 0.8 no nó seguinte → classifica como anomalia</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>// Estrutura simplificada de uma árvore do Isolation Forest
int isolation_tree_infer(float x0, float x1) {
    if (x0 &lt; 0.25f) {
        if (x1 > 0.80f) {
            return -1; // anomalia
        } else {
            return 1;  // normal
        }
    } else {
        if (x1 > 1.2f) {
            return -1; // anomalia
        } else {
            return 1;  // normal
        }
    }
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #616E88">// Estrutura simplificada de uma árvore do Isolation Forest</span></span>
<span class="line"><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">isolation_tree_infer</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x1</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">if</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">x0</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">25</span><span style="color: #D8DEE9">f</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">if</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">x1</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">80</span><span style="color: #D8DEE9">f</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #B48EAD">1</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #616E88">// anomalia</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">1</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF">  </span><span style="color: #616E88">// normal</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">if</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">x1</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF"> 1</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">2</span><span style="color: #D8DEE9">f</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #B48EAD">1</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #616E88">// anomalia</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">1</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF">  </span><span style="color: #616E88">// normal</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<p>Esse tipo de lógica pode ser executado facilmente em microcontroladores sem FPU ou com poucos recursos, bastando exportar as árvores do modelo e convertê-las em comparações encadeadas.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Seção 3 — One-Class SVM</strong></h2>



<p>O One-Class SVM é um método clássico e robusto para detecção de anomalias baseado em fronteiras de decisão. Enquanto um SVM convencional separa duas classes distintas, o One-Class SVM tenta aprender apenas a região onde os dados “normais” se concentram. A ideia central é encontrar uma superfície (hiperplano ou hiperfronteira) que envolva a maior parte do conjunto de dados, deixando pontos distantes dessa região como anômalos.</p>



<p>Matematicamente, ele busca maximizar a margem entre os dados e a origem no espaço transformado pelo kernel. Isso significa que ele depende fortemente da função kernel — normalmente o <strong>RBF (Radial Basis Function)</strong> — para projetar os dados em um espaço onde as fronteiras possam ser bem delimitadas. Essa característica o torna muito poderoso, porém mais custoso computacionalmente que o Isolation Forest, especialmente na fase de inferência, já que envolve cálculos exponenciais e somas ponderadas sobre vetores de suporte.</p>



<p>Em aplicações embarcadas, o One-Class SVM é mais adequado quando:</p>



<ul class="wp-block-list">
<li>o conjunto de dados normal é bem definido;</li>



<li>há pouco ruído;</li>



<li>a anomalia possui características sutis;</li>



<li>os dados têm baixa dimensionalidade.</li>
</ul>



<p>Treinar o modelo em um computador e exportar um SVM simplificado para microcontroladores é viável, desde que a quantidade de vetores de suporte seja pequena.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Exemplo em Python — Treinamento e Teste</strong></h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>from sklearn.svm import OneClassSVM
import numpy as np

# Dados normais
rng = np.random.RandomState(10)
normal = 0.2 * rng.randn(200, 2)

# Anomalias
anom = rng.uniform(low=-3, high=3, size=(10, 2))

# Treina o modelo
model = OneClassSVM(kernel="rbf", gamma=0.1, nu=0.05)
model.fit(normal)

# Testa
test = np.vstack([normal&#91;:5&#93;, anom&#91;:2&#93;])
pred = model.predict(test)

print(pred)  # -1 indica anomalia
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sklearn</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">svm</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">OneClassSVM</span></span>
<span class="line"><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">numpy</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">np</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Dados</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">normais</span></span>
<span class="line"><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">random</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">RandomState</span><span style="color: #D8DEE9FF">(10)</span></span>
<span class="line"><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF"> = 0.2 </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">randn</span><span style="color: #D8DEE9FF">(200</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 2)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Anomalias</span></span>
<span class="line"><span style="color: #8FBCBB">anom</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">uniform</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">low</span><span style="color: #D8DEE9FF">=-3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">high</span><span style="color: #D8DEE9FF">=3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">size</span><span style="color: #D8DEE9FF">=(10</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 2))</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Treina</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">o</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">modelo</span></span>
<span class="line"><span style="color: #8FBCBB">model</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">OneClassSVM</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">kernel</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">rbf</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">gamma</span><span style="color: #D8DEE9FF">=0.1</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">nu</span><span style="color: #D8DEE9FF">=0.05)</span></span>
<span class="line"><span style="color: #8FBCBB">model</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">fit</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Testa</span></span>
<span class="line"><span style="color: #8FBCBB">test</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">vstack</span><span style="color: #D8DEE9FF">([</span><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF">&#91;:5&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">anom</span><span style="color: #D8DEE9FF">&#91;:2&#93;])</span></span>
<span class="line"><span style="color: #8FBCBB">pred</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">model</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">predict</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">test</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">pred</span><span style="color: #D8DEE9FF">)  # -1 </span><span style="color: #8FBCBB">indica</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">anomalia</span></span>
<span class="line"></span></code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Exemplo de Inferência Simplificada em C (Kernel RBF)</strong></h3>



<p>Este é um exemplo reduzido da fórmula RBF usada na inferência:</p>



<p>\[<br>K(x, v_i) = e^{-\gamma |x &#8211; v_i|^2}<br>\]



<p>Onde cada \(v_i\) é um vetor de suporte.</p>



<p>A soma ponderada dos kernels determina a decisão final.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>#include &lt;math.h>

#define GAMMA 0.1f

// Vetor de suporte simplificado (exemplo)
float sv[]&#91;2&#93; = {
    {0.1f,  0.2f},
    {-0.1f, 0.0f},
    {0.05f, 0.1f}
};

// Coeficientes alpha do SVM
float alpha[] = {0.5f, -0.3f, 0.8f};

float rbf(float x0, float x1, float v0, float v1) {
    float dx = x0 - v0;
    float dy = x1 - v1;
    float dist2 = dx*dx + dy*dy;
    return expf(-GAMMA * dist2);
}

int oneclass_svm_infer(float x0, float x1) {
    float sum = 0.0f;

    for (int i = 0; i &lt; 3; i++) {
        sum += alpha&#91;i&#93; * rbf(x0, x1, sv&#91;i&#93;&#91;0&#93;, sv&#91;i&#93;&#91;1&#93;);
    }

    return (sum > 0.0f) ? 1 : -1; // -1 = anomalia
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">#</span><span style="color: #D8DEE9">include</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">math</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">h</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">#</span><span style="color: #D8DEE9">define</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">GAMMA</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">1</span><span style="color: #D8DEE9">f</span></span>
<span class="line"></span>
<span class="line"><span style="color: #616E88">// Vetor de suporte simplificado (exemplo)</span></span>
<span class="line"><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sv</span><span style="color: #D8DEE9FF">[]&#91;</span><span style="color: #B48EAD">2</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">1</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF">  0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">2</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">{</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">1</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">0</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">05</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">1</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #616E88">// Coeficientes alpha do SVM</span></span>
<span class="line"><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">alpha</span><span style="color: #D8DEE9FF">[] </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">0.5</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> -0.3</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0.8</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">rbf</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x1</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">v0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">v1</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">dx</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x0</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">v0</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">dy</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x1</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">v1</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">dist2</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">dx</span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9">dx</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">+</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">dy</span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9">dy</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">expf</span><span style="color: #D8DEE9FF">(</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">GAMMA</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">dist2</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">oneclass_svm_infer</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x1</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sum</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">0</span><span style="color: #D8DEE9">f</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">3</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #D8DEE9">sum</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">+=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">alpha</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">rbf</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">x0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x1</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sv</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93;&#91;</span><span style="color: #B48EAD">0</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sv</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93;&#91;</span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">&#93;)</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">sum</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&gt;</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">0</span><span style="color: #D8DEE9">f</span><span style="color: #D8DEE9FF">) </span><span style="color: #81A1C1">?</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #B48EAD">1</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #616E88">// -1 = anomalia</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<p>Esse tipo de código é viável em um Cortex-M4F ou M7 com FPU; para microcontroladores mais modestos, é possível pré-computar tabelas ou usar aproximações de exponencial (como fast exp).</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>4 — PCA Embarcado para Detecção de Anomalias</strong></h2>



<p>A Análise de Componentes Principais (PCA, Principal Component Analysis) é uma técnica matemática poderosa para redução de dimensionalidade e detecção de anomalias. Diferentemente do Isolation Forest e do One-Class SVM, o PCA não cria fronteiras ou árvores, mas transforma os dados originais em novas direções (componentes principais) que retêm a maior variância possível. Isso permite identificar padrões fundamentais e detectar pontos que se desviam significativamente desse padrão.</p>



<p>A ideia básica é decompor os dados em uma combinação linear de componentes ortogonais. Para detectar anomalias, observamos o <strong>erro de reconstrução</strong>: quando projetamos um ponto nos componentes principais e tentamos reconstruí-lo, pontos normais tendem a ter um erro pequeno, enquanto pontos anômalos produzem erros muito maiores. Essa abordagem é extremamente eficiente para sistemas embarcados porque permite pré-calcular toda a estrutura no computador e embarcar apenas duas operações: multiplicação de matrizes e cálculo de erro.</p>



<p>Matematicamente, se ( x ) é o vetor original e ( W ) é a matriz dos autovetores (componentes), o processo é:</p>



<ol class="wp-block-list">
<li><strong>Projeção no espaço PCA:</strong></li>
</ol>



<p>\[<br>z = W^T (x &#8211; \mu)<br>\]



<ol start="2" class="wp-block-list">
<li><strong>Reconstrução aproximada:</strong></li>
</ol>



<p>\[<br>\hat{x} = Wz + \mu<br>\]



<ol start="3" class="wp-block-list">
<li><strong>Erro de reconstrução:</strong></li>
</ol>



<p>\[<br>e = | x &#8211; \hat{x} |^2<br>\]



<p>Se o erro (e) ultrapassar um limiar definido, classificamos como anomalia.</p>



<p>Essa abordagem é usada em vibração, acústica, qualidade de energia e em sistemas industriais embarcados com pouco poder computacional, pois envolve apenas multiplicações e somas — operações extremamente eficientes em microcontroladores.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Exemplo em Python — PCA para Identificar Anomalias</strong></h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>import numpy as np
from sklearn.decomposition import PCA

# Dados normais
rng = np.random.RandomState(1)
normal = rng.normal(0, 0.3, size=(300, 3))

# Anomalias
anom = rng.uniform(-3, 3, size=(10, 3))
dados = np.vstack(&#91;normal, anom&#93;)

# PCA com 2 componentes
pca = PCA(n_components=2)
pca.fit(normal)

# Função de erro de reconstrução
def reconstruction_error(x):
    z = pca.transform(&#91;x&#93;)
    x_hat = pca.inverse_transform(z)
    return np.linalg.norm(x - x_hat)

# Testando
for i in range(5):
    print("Erro:", reconstruction_error(dados&#91;i&#93;))
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">numpy</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">np</span></span>
<span class="line"><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">sklearn</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">decomposition</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">PCA</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Dados</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">normais</span></span>
<span class="line"><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">random</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">RandomState</span><span style="color: #D8DEE9FF">(1)</span></span>
<span class="line"><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF">(0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0.3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">size</span><span style="color: #D8DEE9FF">=(300</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 3))</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Anomalias</span></span>
<span class="line"><span style="color: #8FBCBB">anom</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">rng</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">uniform</span><span style="color: #D8DEE9FF">(-3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">size</span><span style="color: #D8DEE9FF">=(10</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 3))</span></span>
<span class="line"><span style="color: #8FBCBB">dados</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">vstack</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #8FBCBB">normal</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">anom</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">PCA</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">com</span><span style="color: #D8DEE9FF"> 2 </span><span style="color: #8FBCBB">componentes</span></span>
<span class="line"><span style="color: #8FBCBB">pca</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">PCA</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">n_components</span><span style="color: #D8DEE9FF">=2)</span></span>
<span class="line"><span style="color: #8FBCBB">pca</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">fit</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">normal</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Função</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">erro</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">de</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">reconstrução</span></span>
<span class="line"><span style="color: #8FBCBB">def</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">reconstruction_error</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">x</span><span style="color: #D8DEE9FF">):</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">z</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">pca</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">transform</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #8FBCBB">x</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">x_hat</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">pca</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">inverse_transform</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">z</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">np</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">linalg</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">norm</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">x</span><span style="color: #D8DEE9FF"> - </span><span style="color: #8FBCBB">x_hat</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">Testando</span></span>
<span class="line"><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">range</span><span style="color: #D8DEE9FF">(5):</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #8FBCBB">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Erro:</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">reconstruction_error</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">dados</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #8FBCBB">i</span><span style="color: #D8DEE9FF">&#93;))</span></span>
<span class="line"></span></code></pre></div>



<p>Você perceberá que os erros das amostras anômalas são muito maiores.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>Exemplo Embarcado (C) — Inferência PCA Simplificada</strong></h3>



<p>Os autovetores e a média já foram calculados no PC. Agora, usamos apenas matrizes pequenas no microcontrolador:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>#include &lt;math.h>

// Matriz de autovetores (2 componentes, 3 dimensões)
float W&#91;2&#93;&#91;3&#93; = {
    {0.58f, 0.57f, 0.58f},
    {-0.72f, 0.01f, 0.69f}
};

// Média dos dados (calculada previamente)
float mu&#91;3&#93; = {0.02f, -0.01f, 0.03f};

float reconstruction_error(float x&#91;3&#93;) {
    float x_centered&#91;3&#93;;
    for (int i = 0; i &lt; 3; i++)
        x_centered&#91;i&#93; = x&#91;i&#93; - mu&#91;i&#93;;

    // Projeção
    float z&#91;2&#93; = {0};
    for (int i = 0; i &lt; 2; i++)
        for (int j = 0; j &lt; 3; j++)
            z&#91;i&#93; += W&#91;i&#93;&#91;j&#93; * x_centered&#91;j&#93;;

    // Reconstrução
    float x_hat&#91;3&#93; = {0};
    for (int i = 0; i &lt; 3; i++)
        for (int j = 0; j &lt; 2; j++)
            x_hat&#91;i&#93; += W&#91;j&#93;&#91;i&#93; * z&#91;j&#93;;

    for (int i = 0; i &lt; 3; i++)
        x_hat&#91;i&#93; += mu&#91;i&#93;;

    // Erro
    float e = 0;
    for (int i = 0; i &lt; 3; i++) {
        float d = x&#91;i&#93; - x_hat&#91;i&#93;;
        e += d * d;
    }

    return e;
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">#</span><span style="color: #D8DEE9">include</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">math</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">h</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #616E88">// Matriz de autovetores (2 componentes, 3 dimensões)</span></span>
<span class="line"><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">W</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #B48EAD">2</span><span style="color: #D8DEE9FF">&#93;&#91;</span><span style="color: #B48EAD">3</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">58</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">57</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">58</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">},</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">{</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF">0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">72</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">01</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9FF">69</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #616E88">// Média dos dados (calculada previamente)</span></span>
<span class="line"><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">mu</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #B48EAD">3</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">0.02</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> -0.01</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 0.03</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">reconstruction_error</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #B48EAD">3</span><span style="color: #D8DEE9FF">&#93;) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x_centered</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #B48EAD">3</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">3</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #D8DEE9">x_centered</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">mu</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #ECEFF4">    </span><span style="color: #616E88">// Projeção</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">z</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #B48EAD">2</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">2</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">3</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #D8DEE9">z</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">+=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">W</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93;&#91;</span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x_centered</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #ECEFF4">    </span><span style="color: #616E88">// Reconstrução</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x_hat</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #B48EAD">3</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">3</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">2</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">j</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #D8DEE9">x_hat</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">+=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">W</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF">&#93;&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">z</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">j</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">3</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #D8DEE9">x_hat</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">+=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">mu</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #ECEFF4">    </span><span style="color: #616E88">// Erro</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">e</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">for</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">int</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">3</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">i</span><span style="color: #81A1C1">++</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">d</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">x_hat</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">i</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #D8DEE9">e</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">+=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">d</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">*</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">d</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">e</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span>
<span class="line"></span></code></pre></div>



<p>Essa função pode ser usada diretamente em qualquer microcontrolador, bastando definir um limiar adequado de erro para classificar anomalias.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>5 — Comparação Entre Métodos e Aplicações Práticas</strong></h2>



<p>A escolha entre Isolation Forest, One-Class SVM e PCA depende profundamente do tipo de aplicação, da quantidade de dados disponíveis, da complexidade do sinal e principalmente das restrições computacionais típicas de sistemas embarcados. Cada método tem pontos fortes e limitações, e compreender essas nuances permite projetar sistemas mais eficientes e robustos.</p>



<p>O Isolation Forest é, em geral, o mais eficiente para dados de alta dimensionalidade e cenários onde as anomalias tendem a ser valores extremos ou isolados. Sua natureza baseada em árvores o torna leve na etapa de inferência, já que consiste em uma sequência de comparações simples — ideal em MCUs como RP2040, ESP32-C3/S3 e Cortex-M. Entretanto, sua interpretação pode ser menos intuitiva do que a de modelos lineares ou baseados em geometria. Já o One-Class SVM apresenta excelente desempenho em situações onde os dados normais são bem estruturados e a anomalia é sutil, porém o custo computacional do kernel RBF e a dependência da quantidade de vetores de suporte tornam a inferência mais cara. É um candidato natural quando a inferência ocorre em edge devices mais robustos ou quando se usa aceleradores como o NPU do ESP32-P4, HPM6xxx, STM32N6 ou NPUs externos.</p>



<p>O PCA se destaca em contextos embarcados devido à sua simplicidade computacional e capacidade de reduzir drasticamente a dimensionalidade dos dados, mantendo a essência do comportamento normal. Em aplicações industriais, como vibração e acústica, onde há forte redundância entre sinais, o PCA é extremamente eficaz em capturar esse padrão e detectar desvios, principalmente quando se usa o erro de reconstrução como métrica. Seu treinamento é mais pesado, mas a inferência exige apenas multiplicações de matrizes, algo trivial para um Cortex-M7, M33, ESP32-S3 ou mesmo um RP2040.</p>



<h4 class="wp-block-heading"><strong>Aplicações práticas em sistemas embarcados</strong></h4>



<ul class="wp-block-list">
<li><strong>Manutenção preditiva de motores e transformadores</strong><br>PCA e Isolation Forest são largamente utilizados para vibrações e ruídos mecânicos. PCA detecta sutis alterações espectrais, enquanto Isolation Forest identifica comportamentos fora do padrão global.</li>



<li><strong>Segurança cibernética embarcada</strong><br>Em gateways IoT e sistemas críticos, One-Class SVM é eficiente para detectar tráfego malicioso que difere levemente do comportamento normal.</li>



<li><strong>Sensores de ambiente (temperatura, pressão, corrente, aceleração)</strong><br>Isolation Forest e PCA executam facilmente em MCUs com pouco recurso, monitorando continuamente leituras de sensores.</li>



<li><strong>Detecção de falhas em robôs, veículos autônomos e drones</strong><br>PCA pode identificar alterações no perfil de movimento; Isolation Forest detecta leituras inesperadas de IMUs, LiDARs ou encoders.</li>



<li><strong>Sistemas embarcados de análise de energia elétrica</strong><br>PCA é excelente para detectar distorções e harmônicos incomuns; SVM é útil quando há pouca variabilidade na rede elétrica monitorada.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Seção 6 — Conclusão e Boas Práticas de Implementação em Sistemas Embarcados</strong></h2>



<p>A detecção de anomalias é uma peça central para sistemas embarcados modernos, especialmente aqueles voltados à manutenção preditiva, diagnóstico inteligente, proteção de equipamentos e segurança operacional. Isolation Forest, One-Class SVM e PCA representam três abordagens complementares que oferecem um conjunto sólido de ferramentas para identificar comportamentos inesperados em tempo real.</p>



<p>Quando bem aplicados, esses algoritmos permitem antecipar falhas mecânicas, detectar desvios elétricos, capturar padrões incomuns em vibração/acústica, identificar leituras suspeitas de sensores ou mesmo reforçar a segurança cibernética em ambientes IoT/IIoT — tudo isso com execução eficiente em microcontroladores acessíveis.</p>



<p>Do ponto de vista prático, algumas recomendações ajudam a garantir que o sistema funcione de maneira consistente:</p>



<p>A primeira boa prática é sempre realizar o treinamento dos modelos fora do microcontrolador, preferencialmente em uma estação de trabalho ou servidor dedicado. Os dados coletados devem ser limpos, normalizados e analisados para garantir que representam adequadamente o “comportamento normal” do sistema. Após o treinamento, os parâmetros essenciais — árvores, vetores de suporte ou autovetores — devem ser exportados para o firmware em representações compactas.</p>



<p>Outra recomendação importante é monitorar os limites numéricos. Em MCUs, operações com ponto flutuante podem gerar erros acumulados; por isso, quando possível, considere <strong>quantização</strong>, <strong>uso de ponto fixo</strong>, ou <strong>tabelas de aproximação</strong> para funções como exponencial (no caso do SVM). Em sistemas de baixa potência, evitar funções matemáticas custosas ajuda a manter a latência e o consumo energético sob controle.</p>



<p>A terceira prática consiste em calibrar limiares de detecção dinamicamente. Em vez de usar um limiar fixo, o sistema pode calcular estatísticas ao longo do tempo — como média móvel ou desvio padrão — para adaptar-se a mudanças naturais no ambiente. A detecção de anomalias fica mais robusta em ambientes ruidosos ou sujeitos a variações não controladas.</p>



<p>Por fim, é essencial validar o sistema com dados reais do ambiente final. Testes em bancada podem não refletir ruídos, variações térmicas, jitter dos sensores ou interferências eletromagnéticas típicas de campo. O processo de testes deve incluir cenários-limite para garantir que o sistema responde não apenas ao “anomalo ideal”, mas também a desvios graduais e quase imperceptíveis — aqueles que, na prática, causam a maior parte das falhas industriais.</p><p>The post <a href="https://mcu.tec.br/algoritimos/deteccao-de-anomalias-em-sistemas-embarcados-isolation-forest-one-class-svm-e-pca-com-exemplos-praticos/">Detecção de Anomalias em Sistemas Embarcados: Isolation Forest, One-Class SVM e PCA com Exemplos Práticos</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mcu.tec.br/algoritimos/deteccao-de-anomalias-em-sistemas-embarcados-isolation-forest-one-class-svm-e-pca-com-exemplos-praticos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">944</post-id>	</item>
	</channel>
</rss>
