.mat ファイルを pgfplots にインポートする

.mat ファイルを pgfplots にインポートする

私はpgfplots図を作成するために を使っており、 から生成された(大きな)シミュレーション データ セットを持っていますMatlab。 形式です.mat。 データは次の形式です(2 列)

(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

これは、ファイルがバイナリ形式であり、TeX がバイナリを読み取ることができないためです.mat。ファイルからバイナリ形式を読み取ることができるようにする方法はわかりませんが、より便利な方法は、配列を縦長の行列の列として保存することです。

データ列a、b、cの長さが同じだとします(そうでない場合は、欠落しているエントリをNaNまたはInfで埋めて、pgfplotsがそれを破棄できるようにします)。これは、matlabで次のように実行できます。

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

これにより、配列はヘッダーのないプレーン テキスト形式で保存されます。ファイル名フィールドでフル パスがサポートされているかどうかは確認していませんが、可能であるはずです。

一般的に、 に列名を含めないことをお勧めしますMymatrix。matlab は優れたソフトウェアだからです。

答え2

新しいバージョンの Matlab では、配列からテーブルを生成し、そのテーブルを CSV ファイルに書き込む方法が推奨されています。テーブルには列名を含むヘッダー行があり、これも CSV に書き込まれます。MATLAB の回答

関連情報