Cálculo do valor B por janela deslizante em emissão acústica

Implementação em MATLAB para cálculo do valor B em emissão acústica utilizando o método de janela deslizante. O script permite ajustar dinamicamente o tamanho da janela, o passo de deslocamento e o intervalo de magnitude, além de gerar saídas como valor B, tempo central e coeficiente de correlação, com documentação concisa.

Profissionais da aálise de emissão acústica reconhecem a relevância do parâmetro B, amplamente utilizado em predição sísmica e monitoramento de danos em materiais. A seguir, apresenta-se um procedimento em MATLAB para cálculo do valor B com deslocamento de janela, incluindo a lógica central e detalhamentos.

Estrutura inicial da função:

function [valores_b, tempo_central, coef_r] = calcular_valor_b(magnitudes, tempo, varargin)
    % Configuração de parâmetros opcionais
    config = inputParser;
    addParameter(config, 'TamJanela', 100, @isnumeric);
    addParameter(config, 'PassoDesloc', 50, @isnumeric);
    addParameter(config, 'IntervaloMag', 0.1, @isnumeric);
    parse(config, varargin{:});
    
    tam_janela = config.Results.TamJanela;
    passo = config.Results.PassoDesloc;
    delta_m = config.Results.IntervaloMag;
    
    % Preparação das variáveis de saída
    num_janelas = floor((length(magnitudes) - tam_janela)/passo) + 1;
    valores_b = zeros(num_janelas, 1);
    tempo_central = zeros(num_janelas, 1);
    coef_r = zeros(num_janelas, 1);
    
    % Loop principal de deslocamento
    for k = 1:num_janelas
        indices = (1:tam_janela) + (k-1)*passo;
        mag_janela = magnitudes(indices);
        tempo_janela = tempo(indices);
        
        % Processamento central
        [valores_b(k), coef_r(k)] = metodo_maxima_verossimilhanca(mag_janela, delta_m);
        tempo_central(k) = mean(tempo_janela);
    end
end

O uso de inputParser facilita a gestão de parâmetros opcionais, sendo mais robusto que o tratamento manual de varargin. O parâmetro TamJanela define o tamanho da amostra estatística — valores pequenos geram flutuações, enquanto valores muito grandes podem suavizar detalhes. Recomenda-se utilizar 5%-10% do total de eventos.

A lógica de deslocamento é implementada por (1:tam_janela) + (k-1)*passo, onde a janela avança a cada iteração pelo número de pontos definido em passo. O cálculo floor((length(magnitudes) - tam_janela)/passo) + 1 garante que o índice não ultrapasse os limites do vetor, uma abordagem típica em ambientes MATLAB.

A função central realiza o cálculo estatístico:

function [valor_b, correlacao] = metodo_maxima_verossimilhanca(magnitudes, delta_m)
    mc = min(magnitudes); % Magnitude de corte mínima
    magnitudes_filtradas = magnitudes(magnitudes >= mc);
    
    % Distribuição acumulada
    contagens = length(magnitudes_filtradas):-1:1;
    log_contagens = log10(contagens);
    normalizado = (magnitudes_filtradas - mc)/delta_m;
    
    % Regressão linear
    matriz_proj = [ones(size(normalizado)), normalizado];
    coeficientes = matriz_proj \ log_contagens';
    valor_b = coeficientes(2);
    
    % Cálculo do coeficiente de correlação
    preditos = matriz_proj * coeficientes;
    matriz_corr = corrcoef(log_contagens, preditos);
    correlacao = matriz_corr(1,2);
end

Nota importante: a relação tradicional log(N) = a - b*M requer normalização prévia das magnitudes. A operação normalizado = (magnitudes_filtradas - mc)/delta_m transforma a diferença de magnitude em múltiplos do intervalo, tornando o resultado independente das unidades de medida.

O coeficiente de correlação R² serve como indicador de confiabilidade. Valores de R² abaixo de 0.7 sugerem problemas na qualidade dos dados da janela, sendo aconselhável filtrar resultados com base nesse critério.

Exemplo de aplicação:

% Dados simulados (substituir por dados reais em uso prático)
tempo = (1:1000)';
magnitudes = 2 + 0.8*randn(1000,1) + 0.1*sin(tempo/50);

% Execução do cálculo
[resultado_b, tempo_res, r_quadrado] = calcular_valor_b(magnitudes, tempo, 'TamJanela', 200, 'PassoDesloc', 50);

% Visualização dos resultados
yyaxis left
plot(tempo_res, resultado_b, 'LineWidth', 1.5)
ylabel('Valor B')

yyaxis right
plot(tempo_res, r_quadrado.^2, '--')
ylabel('R²')

O gráfico utiliza dois eixos Y para exibir simultaneamente o valor B e o R², facilitando a aálise da significância estatística. Quedas abruptas no R² podem indicar insuficiência de dados ou agrupamentos de eventos que comprometem a regularidade estatística, devendo ser avaliadas em conjunto com outros indicadores.

Recomendações de parametrização:

  1. O passo de deslocamento deve situar-se entre 1/3 e 1/2 do tamanho da janela, equilibrando eficiência e resolução temporal
  2. O intervalo de magnitude não deve ser inferior à precisão do equipamento, tipicamente 0.1 ou 0.2
  3. Janelas com menos de 50 eventos devem ser ignoradas para evitar resultados instáveis

Para conjuntos de dados extensos (acima de 1 milhão de eventos), a substituição do loop for por parfor, associada ao toolbox de computação paralela, pode reduzir significativamente o tempo de processamento, desde que a memória seja adequadamente gerenciada por segmentação prévia dos dados.

Tags: MATLAB emissão acústica valor B janela deslizante regressão linear

Publicado em 7-14 06:57