Para quem trabalha com dados experimentais em planilhas Excel e utiliza o Matlab para ajustes, automatizar a importação e processamento pode economizar tempo e reduzir erros. Este guia aborda desde a leitura de arquivos Excel até o ajuste em lote de curvas, focando em soluções robustas.
Importação de Dados do Excel para o Matlab
A importação adequada é crucial para evitar falhas. Para versões recentes do Matlab (R2019a ou superior), prefira readmatrix ou readtable, pois são mais efiicentes e lidam melhor com dados mistos. Para compatibilidade com versões antigas, xlsread ainda pode ser usado, mas requer cuidados extras.
Usando readmatrix (recomendado para versões recentes):
% Definir o caminho do arquivo explicitamente para evitar erros de diretório
caminhoArquivo = '/seus/dados/planilha.xlsx';
% Ler todos os dados numéricos da planilha especificada
dadosBrutos = readmatrix(caminhoArquivo, 'Sheet', 'Dados');
Esta função ignora automaticamente cabeçalhos de texto e converte valores não numéricos (como "N/A") em NaN, simplificando o processamento.
Usando xlsread (para versões legadas):
[numDados, txtDados, dadosOriginais] = xlsread('planilha.xlsx', 'Dados');
% Extrair apenas os dados numéricos
matrizDados = numDados;
Se a planilha incluir cabeçalhos, numDados iniciará a leitura a partir da primeira célula numérica, ignorando o texto. Verifique se o arquivo não está aberto em outro programa e se o caminho está correto para evitar erros como "arquivo não encontrado".
Preparação dos Dados para Ajuste em Lote
Após a importação, organize os dados em conjuntos menores para ajustes individuais. Suponha que os dados tenham 70 linhas e 2 colunas (x e y), e deseja-se dividi-los em grupos de 7 pontos cada.
% Separar colunas em variáveis independentes
valoresX = dadosBrutos(:, 1);
valoresY = dadosBrutos(:, 2);
% Calcular o número total de pontos e o tamanho do grupo
totalPontos = length(valoresX);
tamanhoGrupo = 7;
% Inicializar células para armazenar os conjuntos divididos
conjuntosX = cell(1, ceil(totalPontos / tamanhoGrupo));
conjuntosY = cell(1, ceil(totalPontos / tamanhoGrupo));
% Dividir os dados em grupos usando um loop otimizado
indiceGrupo = 1;
for i = 1:tamanhoGrupo:totalPontos
fimIndice = min(i + tamanhoGrupo - 1, totalPontos);
conjuntosX{indiceGrupo} = valoresX(i:fimIndice);
conjuntosY{indiceGrupo} = valoresY(i:fimIndice);
indiceGrupo = indiceGrupo + 1;
end
Este método utiliza células para armazenar subconjuntos de dados, facilitando o acesso durante o ajuste. Certifique-se de que o número total de pontos seja divisível pelo tamanho do grupo, ou ajuste o código para lidar com restos.
Automação do Ajuste de Curvas e Plotagem
Com os dados organizados, realize ajustes em lote usando funções como fit ou polyfit. Por exemplo, para um ajuste linear em cada grupo:
% Ajustar cada conjunto com um modelo linear
modelosAjustados = cell(size(conjuntosX));
for k = 1:length(conjuntosX)
modelosAjustados{k} = polyfit(conjuntosX{k}, conjuntosY{k}, 1);
end
% Plotar todas as curvas em um único gráfico
figure;
hold on;
legendEntries = cell(1, length(conjuntosX));
for k = 1:length(conjuntosX)
% Gerar pontos suaves para a curva ajustada
xSuave = linspace(min(conjuntosX{k}), max(conjuntosX{k}), 100);
ySuave = polyval(modelosAjustados{k}, xSuave);
plot(xSuave, ySuave, 'LineWidth', 1.5);
legendEntries{k} = sprintf('Grupo %d', k);
end
legend(legendEntries);
xlabel('Variável X');
ylabel('Variável Y');
title('Ajustes Lineares por Grupo');
hold off;
Este código ajusta linearmante cada grupo de dados e plota todas as curvas em um único gráfico para comparação. Modifique o modelo de ajuste (por exemplo, polinomial de grau superior) conforme a necessidade dos seus dados.