名前が数字に関連付け​られたtxtファイル​をループでインポート​したい

17 ビュー (過去 30 日間)
巧 平山
巧 平山 2023 年 6 月 7 日
コメント済み: 巧 平山 2023 年 6 月 8 日
1.txt~100.txt のtxtファイルが有ります。
txtファイルの中には4*1000のデータが入っており
M=readmatrix('filename.txt')
で、Mが4*1000 double の形で出力出来ることは確認できているのですが
id = 1
matlix=readmatrix('filename.txt')
の様にすると
次を使用中のエラー: readmatrix
すべてのパラメーターは関連付けられている値をもっていなければなりません。
のエラーが出ます。
最終的には
for id = 1 : 100
matlix=readmatrix('filename.txt')
Mat{id}=matlix
end
の様にして4*1000*100 のひとつのマトリクスを得たいです。
https://jp.mathworks.com/matlabcentral/answers/557602-csv-mat?s_tid=srchtitle などのヘルプを参考にしてはいるのですが上手くいきません
ご存知の方いらっしゃれば回答頂けると幸いです。

採用された回答

Atsushi Ueno
Atsushi Ueno 2023 年 6 月 7 日
Mat{id}=matlix
中括弧を使ったアクセスは、セル配列の値に対するアクセスです。
4*1000*100 のひとつのマトリクスを得る場合、小括弧()でアクセスします。
f_name_base = [pwd filesep]; % 作業フォルダのパスを得る
Mat = zeros(4,1000,100); % 4*1000*100 のひとつのマトリクスに結果を格納する
for id = 1:100
str_id = num2str(id, '%i');
f_path = strcat(f_name_base, str_id, '.txt');
writematrix(ones(4,1000),f_path); % テスト用の 1.txt~100.txt を作成。本来は不要
matlix = readmatrix(f_path);
Mat(:,:,id) = matlix;
end
sum(Mat,'all') % 4*1000*100 全要素の値を1にしたので、合計すると400000になる
ans = 400000
  1 件のコメント
巧 平山
巧 平山 2023 年 6 月 8 日
上手くできました!有難うございました!!

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

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange起動と終了 についてさらに検索

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!