1

ディレクトリに 100 個の ASCII ファイルがあり、すべて次のように名前が付けられています。

int_001.ASC
int_002.ASC
int_003.ASC
.
.
.
int_099.ASC
int_100.ASC

次のように動作するはずです。

A = importdata('int_001.ASC', ' ', 9)
x = A.data(:,1)
y = A.data(:,2)

私の質問は次のとおりです。どうすれば100回書くのを避けることができimportdataますか? 最初の文字列だけを書き込んでから、すべてのデータをアップロードする方法はありますか?

ありがとう

4

3 に答える 3

11
fls = dir( 'int_*.ASC' );
for fi=1:numel(fls)
    A{fi} = importdata( fls(fi).name, ' ', 9 );
    % ...
end

更新:文字列の書式設定
を 使用して、番号に従ってファイルを読み取ることができます。

for fi=1:100
    A{fi} = importdata( sprintf('int_%03d.ASC', fi ), ' ', 9 );
    % ...
end
于 2013-03-12T16:14:37.487 に答える
4

strcat関数を for ループで使用できます。

for k=1:n
    fileName = strcat('int_',num2str(k, '%03d'),'.ASC');
    A(k) = importdata(fileName, ' ', 9);
    x(k) = A(k).data(:,1);
    y(k) = A(k).data(:,2);
end
于 2013-03-12T16:19:03.827 に答える
2

これを少しやり過ぎたい場合:

alldata = arrayfun(...
    @(dirEntry)importdata(dirEntry.name, ' ', 9), ...
    dir('int_*.ASC'),...
    'uniformoutput',false);

この行は次のことを行います

  1. 構造体の配列として、部分的なファイル名に一致するすべてのファイルのリストを取得します(h / t Shai)
  2. その配列の要素ごとにimportdata、元の投稿からの呼び出しを実行します。
  3. すべての出力をセル配列にコンパイルします。
于 2013-03-12T17:18:48.580 に答える