複数のExcelファ​イルを多次元配列とし​てインポートするやり​方

27 ビュー (過去 30 日間)
myu
myu 2019 年 10 月 1 日
コメント済み: myu 2019 年 10 月 14 日
こんにちは。
データのインポートについてお伺いいたします。
同一実験の試技のデータが複数のExcelファイル(1試技に対し1つ)となっています。それを多次元配列としてでデータ入力したいと考えています。ファイルの選択には以下の方法を用いる予定です。その後どのようにコードを書けば、多次元配列として処理できるか教えてください。宜しくお願い致します。
[rdf_name,prd]=uigetfile( '*.*','ファイルの指定','multiselect','off');
cd(prd);
if iscell(rdf_name)==0; rdf_name={rdf_name};end
faa=size(rdf_name);
fnumend=faa(2);
disp(rdf_name);
  3 件のコメント
myu
myu 2019 年 10 月 8 日
編集済み: myu 2019 年 10 月 8 日
コメントありがとうございます。
ファイルはcsvです。データは行列で添付した'sample1_1.csv'のようになっているファイルを
sample1_1.csv~sample1_10.csv
までの計10個のファイルを一括でインポートしたいと思っています。
その後は各列についての平均や分散などを計算する予定です。
イメージとしては以下のように格納したいと思っていますが、その後の計算が出来れば別のやり方でも構いません。よろしくお願いいたします。
Yoshio
Yoshio 2019 年 10 月 11 日
サンプルファイルのご提供ありがとうございました。
これはコメントですが、このようなプログラムの作成では、動作検証しやすいダミーデータの作成もコツの一つです。
例えば、実際のデータよりも少なくして、人工的な値(整数、10の倍数とか)で今の場合だと、一つのファイルは整数、もう一つは10の倍数等を書き込んで置くとデータが正しく読み込まれたか確認がしやすいです。

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

採用された回答

Yoshio
Yoshio 2019 年 10 月 11 日
編集済み: Yoshio 2019 年 10 月 14 日
頂いたファイル仕様に基づいて、以下作成してみました。
一部記載いただいたコードを変更しています。一応データの範囲を指定できるようしてありますが、全てのcsvファイルで範囲が共通であることが前提です。
clear
[rdf_name,prd]=uigetfile( '*.csv','ファイルの指定','multiselect','on');
cd(prd);
if iscell(rdf_name)==0; rdf_name={rdf_name};end
% faa=size(rdf_name);
% fnumend=faa(2);
fnumend = size(rdf_name,2);
disp(rdf_name);
m = 79; n = 14;
data = zeros(m,n,fnumend);
for i = 1:fnumend
data(:,:,i) = read_data(rdf_name{i},m,n);
end
function data_matrix = read_data(fname,m,n)
data_matrix = readmatrix(fname,'Range',[2,2,m+1,n+1]);
end
  3 件のコメント
Yoshio
Yoshio 2019 年 10 月 14 日
上記コード(ファイルを一つ指定した場合も動作するように修正済み)を、適当な名前をつけて、保存してから実行してください。スクリプトファイルの中に関数read_dataを定義しているので、mファイルとして実行します。コードを選択して実行だけでは動きません。
myu
myu 2019 年 10 月 14 日
出来ました!ありがとうございます。大変助かりました。

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeData Import and Management についてさらに検索

Community Treasure Hunt

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

Start Hunting!