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:
- O passo de deslocamento deve situar-se entre 1/3 e 1/2 do tamanho da janela, equilibrando eficiência e resolução temporal
- O intervalo de magnitude não deve ser inferior à precisão do equipamento, tipicamente 0.1 ou 0.2
- 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.