将 .txt 文件从 Matlab 导入到 latex

将 .txt 文件从 Matlab 导入到 latex

我正在尝试使用 latex 绘制修改后的贝塞尔函数,因此我尝试了以下操作我在 Matlab 中生成了以下 .txt 文件

z = linspace(0,20);
scale = 1;
Ks = zeros(4,100);
for nu = 0:3
  Ks(nu+1,:) = besselk(nu,z,scale);
end

save('data','Ks','z') 

然后我在乳胶中尝试了以下操作

\documentclass{standalone}

\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.10}

\pgfplotstableread{
\include{Data}
}\datatable

\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table  {\datatable}
;

\end{axis}
\end{tikzpicture}
\end{document}

但我没有得到输出。

答案1

您做错了几件事。首先,除非您另行指定,否则saveMatlab 中的函数会保存二进制文件,并且无法读取文件。您需要添加选项,或使用,或其他将数据写入文本文件的函数。.matpgpflotstableread.mat-asciidlmwritefprintf

接下来,您不应该\include在里面使用pgfplotstableread,而是直接添加文件名,即\pgfplotstableread{filename.txt}(扩展名不必是.txt。)默认情况下\pgfplotstableread假定文本文件中的列由空格分隔,如果您使用不同的列分隔符,则必须指定,例如\pgfplotstableread[col sep=comma]{...}如果使用逗号。

最后,您可能必须选择要绘制哪些列。当您这样做时\addplot table {\datatable};pgfplots将使用第一列作为 x 值,第二列作为 y 值。要绘制多列,您需要多个\addplot,例如

\addplot table[x index=0, y index=1] {\datatable};
\addplot table[x index=0, y index=2] {\datatable};

如果列有命名,则可以使用 egx=NameOfXColumn代替x index=0


工作示例如下。我通过 OctaveOnline 使用了 Octave,但我认为 Matlab 中的代码应该相同。

z = linspace(0,20);
scale = 1;
Ks = zeros(4,100);
for nu = 0:3
  Ks(nu+1,:) = besselk(nu,z,scale);
end

% Put both variables in one matrix
% transpose them to make the data column oriented - the dimensions of dataOut is 100 x 5
dataOut = [z' Ks'];

% save the new matrix using the `-ascii` option
save('data.dat','dataOut', '-ascii') 

LaTeX 代码:

\documentclass{standalone}

\usepackage{pgfplotstable}
\pgfplotsset{compat=1.10}

% add file name directly, no \input or \include
\pgfplotstableread{data.dat}\datatable

\begin{document}
\begin{tikzpicture}
\begin{axis}[ymode=log]
\addplot table {\datatable};
\addplot table[y index=1] {\datatable};
\addplot table[y index=2] {\datatable};
\addplot table[y index=3] {\datatable};
\addplot table[y index=4] {\datatable};

\legend{$\nu=0$, $\nu=1$, $\nu=2$, $\nu=3$}

\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容