Manipulação de Matrizes de Covariância em Ambiente Matlab

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-Leibler
  • dist = distancia_logeuclid(C_a, C_b): Métrica log-euclidiana
  • dist = 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érica
  • C_t = geodésica_riemann(C_inicio, C_fim, parametro): Geodésica riemanniana

Médias de Matrizes

  • Media = media_covariancias(Matrizes, metrica): Média genérica
  • Media = media_riemann(Matrizes): Média riemanniana
  • Mediana = mediana_riemann(Matrizes): Mediana riemanniana

Utilitários Riemannianos

  • LogC = logaritmo_matricial(C): Logaritmo canônico
  • ExpC = exponencial_matricial(C): Exponencial canônica
  • ProjTangente = 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édia
  • Resultados = 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);

Tags: MATLAB MatrizesCovariância GeometriaRiemanniana MatrizesSPD classificação

Publicado em 6-16 05:51 por Thomas