Introdução
Este conjunto de ferramentas oferece funcionalidades para estimação e manipulação de matrizes de covariância no Matlab. As operações principais concentram-se na geometria riemanniana de matrizes SPD (Semi-Definidas Positivas), incluindo cálculo de distâncias, geodésicas, projeções no espaço tangente e estimação de médias utilizando diversas métricas.
Instalação
executar_instalador
Geração de Matrizes SPD
[Matrizes, Sigma] = gerar_conjunto_wishart(dimensao, qtd, graus_liberdade, Sigma): Produz matrizes SPD mediante disttribuição de Wishart
Cálculo de Distâncias
dist = distancia(C_a, C_b, metrica): Distância genérica (euclidiana padrão)dist = distancia_kullback(C_a, C_b): Divergência de Kullback-Leiblerdist = distancia_logeuclid(C_a, C_b): Métrica log-euclidianadist = distancia_riemann(C_a, C_b): Distância riemanniana
Estimação de Matrzies
MatrizesCov = calcular_covariancias(Dados): Para conjuntos de sinais 3D (canais × amostras × épocas)
Operações Geodésicas
C_t = geodésica(C_inicio, C_fim, parametro, metrica): Trajetória geodésica genéricaC_t = geodésica_riemann(C_inicio, C_fim, parametro): Geodésica riemanniana
Médias de Matrizes
Media = media_covariancias(Matrizes, metrica): Média genéricaMedia = media_riemann(Matrizes): Média riemannianaMediana = mediana_riemann(Matrizes): Mediana riemanniana
Utilitários Riemannianos
LogC = logaritmo_matricial(C): Logaritmo canônicoExpC = exponencial_matricial(C): Exponencial canônicaProjTangente = mapa_log(C_ref): Projeção no espaço tangente
Visualização
visualizar_variedade(Matrizes, rotulos, fronteira): Plotagem 2D para matrizes 2×2
Classificação
Resultados = classificar_mdm(Teste, Treino, RotulosTreino): Distância mínima à médiaResultados = classificar_tslda(Teste, Treino, RotulosTreino): LDA no espaço tangente
Exemplos Práticos
Geração de Matrizes e Média Riemanniana
% Criar 15 matrizes 4x4 com 20 graus de liberdade
MatrizesSPD = gerar_conjunto_wishart(4, 15, 20);
% Calcular média riemanniana
MediaRiem = media_covariancias(MatrizesSPD, 'riemann');
Processamento de Sinais Multidimensionais
% Gerar sinal aleatório: 8 canais × 500 amostras × 800 épocas
Sinais = randn(8, 500, 800);
% Calcular matrizes de covariância
MatrizesCov = calcular_covariancias(Sinais);
% Obter média riemanniana
MediaRiem = media_riemann(MatrizesCov);