将 .mat 文件导入 pgfplots

将 .mat 文件导入 pgfplots

我使用pgfplots创建图形,我有一组(大量)模拟数据,这些数据来自Matlab。它的.mat格式为 。数据的形式为(两列)

(1,0.2)

(1,0.3)

...

(1,0.2)

...

(2,0.4)

(2,0.1)

...

中的散点图pgfplots比较合适。我想使用直接导入此文件pgfplots。不幸的是,以下代码似乎不起作用。

\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} 

有人知道如何导入这些数据吗?由于数据量有点大,所以不可能将每个样本复制到代码中。

答案1

这是因为.mat文件是二进制格式,而 TeX 无法读取二进制。我不知道如何才能从文件中读取二进制格式,但更方便的方法是将数组作为列存储在高矩阵中。

假设您有长度相等的数据列 a、b、c(否则用 NaN 或 Inf 填充缺失的条目,以便 pgfplots 可以丢弃它)。这可以在 matlab 中通过以下方式完成

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

这将以无标题的纯文本格式保存数组。我没有检查文件名字段是否支持完整路径,但应该是可能的。

一般来说,我建议不要在 中包含列名Mymatrix。因为 matlab 是一款很棒的软件。

答案2

在较新的 Matlab 版本中,建议的方法是从数组生成一个表,并将该表写入 CSV 文件。该表有一个标题行,其中包含列名,也写入 CSV。请参阅MATLAB 答案

相关内容