1

.txt内部にファイルがある参照フォルダーが必要なプログラムを作成しています。これらのファイルは自動的に読み込まれます。次のステップで、ユーザーはファイルを選択するよう求められ、プログラムは指定されたファイルを読み取ります。

問題は、参照を別のフォルダーに入れたいということです(同じままです)。現在のフォルダーがユーザーのデータを含むフォルダーである場合、参照ファイルを読み取るにはどうすればよいですか?

現在の自動ファイルを開く部分のコードラインは次のとおりです。

fichierref = 'H:\MATLAB\Archive_08112012';
files = dir(fullfile(fichierref, '*.txt'));
numberOfFiles = numel(files);
for d = 1:numberOfFiles
   filenames(d) = cellstr(files(d).name);
end

ファイルは自動的に開きますが、現在のフォルダーが Archive_08112012 の場合のみです。

編集:

これを追加します。これがファイルを開く方法です。

headerlinesIn = 11;
delimiterIn=' ';
if numberOfFiles > 1
for i=1:numberOfFiles
     data = importdata(filenames{i},delimiterIn,headerlinesIn);

numberOfFiles = 1 の場合はまったく同じ行ですが、for ループはありません。

4

3 に答える 3

3

コードをデバッグすると、何が問題なのかがすぐにわかります。

files = dir(fullfile(fichierref, '*.txt'));
..
filenames(d) = cellstr(files(d).name);

ファイル名のセル配列を作成しています (注:フル パスではなく、names )。この配列の内容を調べていれば、ファイルの読み込みで何が問題になっているのかがわかります。

 data = importdata(filenames{i},delimiterIn,headerlinesIn);

impordataファイル名で発行します。完全なパスを指定しない場合、matlab は現在のディレクトリ (または matlab パスに追加された他のディレクトリ。ここでは重要ではありません) でファイルを探します。

目的のファイルのフル パスを使用して importdata を使用するように切り替える必要があることは、今では明らかになっているはずです。フルファイルでこれを行います:

other_directory = 'c:\whatever\it\might\be'
data = importdata(fullfile(other_directory,filename{i}),delimiterIn,headerlinesIn);
于 2013-02-11T20:23:03.933 に答える
2

現在の作業ディレクトリの外にあるファイルを参照するには、ファイルへのフル パス (または相対パス) が必要です。fullfileサンプル コードで行ったように、 を使用してパスを作成できます。関数を呼び出すときは、ファイル名だけでなくフル (または相対) パスを使用しますimportdata

于 2013-02-11T20:18:36.510 に答える
1

使い続けるべきfullfileです。http://www.mathworks.com/help/matlab/ref/fullfile.htmlから取った例を投稿するだけです

f = fullfile('myfolder','mysubfolder','myfile.m')

f =
myfolder\mysubfolder\myfile.m
于 2013-02-11T19:53:57.250 に答える