我使用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 答案