Importando arquivo .mat para pgfplots

Importando arquivo .mat para pgfplots

Estou usando pgfplotspara criar figuras e tenho um (grande) conjunto de dados de simulação gerados a partir de arquivos Matlab. Está no .matformato. Os dados estão no formato (duas colunas)

(1,0.2)

(1,0.3)

...

(1,0.2)

...

(2,0.4)

(2,0.1)

...

Um gráfico de dispersão pgfplotsseria apropriado. Quero importar diretamente este arquivo usando pgfplots. Infelizmente, o código a seguir parece não funcionar.

\documentclass{article}
\usepackage{pgfplots}
\usepackage{xcolor}

\begin{document}

\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot+[scatter]
table{test.mat};
\end{axis}
\end{tikzpicture}
\end{figure}

\end{document} 

Alguém sabe como importar esses dados? Como o tamanho é um pouco grande, não é possível copiar todas as amostras no código.

Responder1

Isso se deve ao fato de que .mato arquivo é um formato binário e o TeX não pode ler binário. Não sei como é possível ler o formato binário de um arquivo, mas uma maneira bastante mais conveniente é armazenar as matrizes em uma matriz alta como colunas.

Suponha que você tenha as colunas de dados a,b,c com comprimento igual (caso contrário, preencha as entradas ausentes com NaN ou Inf para que o pgfplots possa descartá-las). Isso pode ser feito no matlab via

Mymatrix = [a b c];
save('myfile.txt', 'Mymatrix', '-ascii','-double');

Isso salvaria as matrizes em formato de texto simples, sem cabeçalhos. Não verifiquei se o caminho completo é suportado no campo do nome do arquivo, mas deveria ser possível.

Em geral, eu recomendaria evitar incluir nomes de colunas no arquivo Mymatrix. Porque matlab é um ótimo software.

Responder2

Nas versões mais recentes do Matlab, a forma recomendada é gerar uma tabela a partir do array e gravar a tabela em um arquivo CSV. A tabela possui uma linha de cabeçalho que contém os nomes das colunas e também é gravada no CSV. VerRespostas do MATLAB

informação relacionada