0

フォルダー内のすべての .xls ファイルをループし、特定のセルからデータを取得する必要があるスクリプトを作成しています。これは可能だと思いますxlsreadが、次のようなエラーが表示され続けます。

Matlab:xlsread:filenotfound

コードの基本構造は次のとおりです。

files = dir('C:\folder\folder\folder\*.xls');
channelinfo = 'C:\differentfolder\chanloc.type';
cnt = '.cnt';
condition = 'varriable';


for i = 1:length(files(:,1))
    try

        CNTCrash1WindowStart = xlsread(files(i).name, 'Summary', 'C8');
        CNTCrashWindowEnd = xlsread(files(i).name, 'Summary', 'D8');
        subjectNum = xlsread(files(i).name, 'User Info', 'A2');

        eeglab;
        %eeglab things happen here

    catch ME
        disp(ME)
    end
end            
4

1 に答える 1

2

ここでの問題は、ファイルがpwd(現在の作業ディレクトリ) にないことです。を呼び出すとdir、ファイル名が表示されますが、フル パス名は含まれません。したがってxlsread、存在しない場所で .xls ファイルを探しています。フルパスを含む一時的な名前を設定してこれを修正し、それを次のようにフィードしxlsreadます。

folder = 'C:\folder\folder\folder\'; %'//
files = dir([folder, '*.xls']);
channelinfo = 'C:\differentfolder\chanloc.type';
cnt = '.cnt';
condition = 'variable';

for ii = 1:length(files(:,1))
    try
        tempname = fullfile(folder, files(ii).name); %// Thanks to excaza
        CNTCrash1WindowStart = xlsread(tmpname, 'Summary', 'C8');
        CNTCrashWindowEnd = xlsread(tmpname, 'Summary', 'D8');
        subjectNum = xlsread(tmpname, 'User Info', 'A2');

        eeglab;
        %eeglab things happen here

    catch ME
        disp(ME)
    end
end 
于 2015-12-15T14:16:17.383 に答える