3次元配列データのExcelへのエクスポート

31 ビュー (過去 30 日間)
Tsuduri
Tsuduri 2023 年 5 月 17 日
回答済み: Hernia Baby 2023 年 5 月 18 日
.matファイルに保存した変数の3次元配列をExcelにエクスポートしたいのですが、どのようにすれば良いのでしょうか
  2 件のコメント
Atsushi Ueno
Atsushi Ueno 2023 年 5 月 17 日
どの様な出力形式が求められていますか?
  • 次元を落として1枚のシートに表現する ⇒ reshape関数とwritematrix関数等を使う
  • 3次元方向を複数のシートに分けて保存する ⇒ writematrix関数等を複数回使う
  • 可読性が無くても良いから兎に角 Excel ファイルにする ⇒ 当該.matファイルをExcelファイルに埋め込む
【類似の質問】リンクと回答者コメントの翻訳を羅列しました
xlswriteは一度に1つのシートにしか書き込めないので、2D形式のデータしか書き込めません。3Dデータを書き込むには、データを大きな2D配列に整形するか、データの各シートをエクセルファイルの1シートに保存するループを実行することになります。
xlswrite() of reshape(YourArray, size(YourArray,1), []) で、必ず .xlsx 出力にしてください(.xls では行数が多すぎるでしょう)。5×5のシートが44040枚あるスプレッドシートを作ることも可能ですが、それはちょっともったいない気がします。
以下のいずれも、3次元行列の3次元形式での保存をサポートしていません:
3次元行列を3次元として保存することをサポートするフォーマットを以下に示します:
  • save (バイナリ形式)
  • Tiffクラス
  • dicomwrite
  • tiffなど一部の画像形式に対するimwrite
  • EDFファイルフォーマットのサポート
  • HDFファイルフォーマットのサポート
  • json
Tsuduri
Tsuduri 2023 年 5 月 17 日
目的としては2次元の配列を1シートもしくは1ファイルとして保存し、それらを重ねて同一セルの値を平均するといった流れになります
例.720*1280*1000の配列の場合,720*1280の配列を1シートまたは1ファイルに保存し,それを1000枚作り同一セルを平均化

サインインしてコメントする。

採用された回答

Hernia Baby
Hernia Baby 2023 年 5 月 18 日
以下にやり方示します
サンプルデータ作成
t = rand(10,3,5);
sz = size(t,3);
①ファイル毎に保存
for ii = 1:sz
fname = sprintf('file_%i.xlsx',ii);
writematrix(t(:,:,ii),fname);
end
②シート毎に保存
for ii = 1:sz
writematrix(t(:,:,ii),'test.xlsx','Sheet',ii);
end
Warning: Added specified worksheet.
Warning: Added specified worksheet.
Warning: Added specified worksheet.
Warning: Added specified worksheet.
中身確認
dir
. .. file_1.xlsx file_2.xlsx file_3.xlsx file_4.xlsx file_5.xlsx test.xlsx
なお、同一セルの平均化はmeanでできます
t_ave = mean(t,3);

その他の回答 (0 件)

製品


リリース

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!