R2015a 以前の xlsread/xlswrite 関数では、1回の呼び出しごとに Excel のプロセスをオープンし、クローズする、という処理が含まれているため、繰り返し実行する場合には、それがボトルネックとなる場合があります。
xlsread や xlswrite 関数を用いた繰り返し実行において、処理を高速化する方法として、以下の方法が考えられます。
1. R2015b 以降のバージョンを使用する方法
R2015b 以降では、 同じスプレッドシートを繰り返し読み書きする場合のパフォーマンスが大幅に 向上されました。
2. readtable, writetable 関数を使用する方法
MATLAB R2013b 以降では、テーブル型のデータに対するファイル I/O 関数として readtable, および writetable 関数が提供されており、高速化できる可能性があります。
詳細については、それぞれの関数リファレンス、および、以下の URL より利用例をご覧ください。
・Excel スプレッドシートへのデータの書き込み
3. ActiveX での処理をユーザ側で記述する方法
ActiveX 機能を利用したプログラミングを行うことで、処理内容に合わせ、必要な処理だけを実装することになり、時間の短縮を期待できます。
ActiveX を用いたコーディングについては、下記よりヘルプドキュメントをご覧ください。
・Excel をオートメーション サーバーとして使用したスプレッドシート データの書き込み
MATLAB R2016a 以降のリリースをご利用の場合は、下記コマンドでもドキュメントをご覧いただけます。
web(fullfile(docroot, 'matlab/matlab_external/using-a-matlab-application-as-an-automation-client.html'))
なお、呼び出すメソッドについては、Microsoft Excel側の API であるため、 細かなAPI の使用法やAPIの種類等は、Microsoft 社の外部サイトなどをご参照ください。
その他、ユーザコミュニティである MATLAB Central/File Exchange において、xlswrite 関数の高速化を図ったコードがいくつか紹介されています。
・MATLAB Central: File Exchange
ただし、MATLAB Central にて公開されているプログラムについてのお問い合わせは、プログラム作成者の方に直接お問い合わせください。