2017-01-31 14 views
0

私はこれが間違ったファイルパスに起因する可能性があることを理解していますが、私はそれを修正して、同じエラーで終わるすべての方法を試しました。コードは以下の通りです。 Apensdploopで次のコードのファイルパスに何が間違っていますか?

clc 
clear all 
fid=fopen('ECresult.txt','w'); 
for p=1:2; 
% textFilename{p} = fullfile('/ccc/Desktop/Lalitha-18/EO',['EO' num2str(p)'.txt']); 
textFilename{p} = fullfile('C:/Users/Biswajit/Desktop/Biswajit_nimmy',['LC1EC1' num2str(p) '.txt']); 

id{p} = fopen(textFilename{p},'rt'); 
textdata{p} = textscan(id{p},'%s%s'); 
fclose(id{p}); 

p 
X=load(['EC' num2str(p) '.txt']); 
N=length(X) 
m=2; 
counter1=0; counter2=0; 
k=0.2; 
r = k*std(X); 
i=1;j=1; 
while i<= N-m 
Y=[X(i:i+m-1)]; 
while j<=N-m 
    Z=[X(j:j+m-1)]; 
    d1=abs(Y-Z); 
    if d1<=r 
    counter1=counter1 + 1; 
    end 
    j=j+1; 
    end 
    IC(i) = counter1/(N-m); 
counter1=0;j=1; 
i=i+1; 
end 
i=1; 
m=m+1; 
while i <= N-m 
Y = [X(i:i+m-1)]; 
while j<= (N-m) 
    Z = [X(j:j+m-1)]; 
    d2 = abs(Y-Z); 
    if d2<=r 
    counter2=counter2 +1; 
    end 
    j=j+1; 
    end 
ID(i)=counter2/(N-m); 
counter2=0; j=1; 
i = i+1; 
end 
Entropy=0; 
i=1; 
while i<=N-m 
Ratio=IC(i)/ID(i); 
Entropy=Entropy +log (Ratio); 
i = i+1; 
end 
Approxntropy(p) = Entropy/(N-m); 
fid=fopen('EO.txt','w'); 
fprintf(fid, '%5.6f\r\n', Approxntropy); 
end 

正確なエラーメッセージは、関数textscan 無効なファイル識別子を用い

" エラー以下の通りである。有効なファイル識別子を生成するためのfopenを使用する。

エラー(線13) テキストデータ{p} = textscan(id {p}、 '%s%s'); " 助言してください。

+0

[link1](http://stackoverflow.com/q/20805070/3599179)と[link2](http://stackoverflow.com/q/10606373/3599179)を参照してください。 – codeaviator

答えて

0

エラーメッセージは、fopenがファイルを開くことができなかったことを意味します。この場合、-1を返します。あなたがエラーをキャッチしなかったので、あなたはtextscanに-1を渡し、それから文句を言います。したがって、id{p}textscanに渡す前に、それが-1であることを確認する必要があります。これはエラーを意味します。あなたは、関数fopenに渡している何

p = 1のためにスラッシュが私には欠けているように

'C:/Users/Biswajit/Desktop/Biswajit_nimmyLC1EC11.txt'

が見えるなり

fullfile('C:/Users/Biswajit/Desktop/Biswajit_nimmy',['LC1EC1' num2str(p) '.txt']);

です。代わりに

fullfile('C:/Users/Biswajit/Desktop/Biswajit_nimmy/',['LC1EC1' num2str(p) '.txt']);

を試してみてください?

その他の場合は、fopenにブレークポイントを設定し、内容を確認してください。textFilename{p}次に、正しいパスとファイル名が含まれているかどうかを確認します。

+0

あなたが言及したスラッシュを組み込み、 "id {p} = fopen(textFilename {p}、 'rt');"という行にブレークポイントを設定し、textFilenameに次のパス "C:\ Users \ Biswajit \ Desktop \ Biswajit_nimmy \ LC1EC11.txt "と入力します。しかし、エラーはそのままです。 – biswajit

+0

ファイルがこのフォルダに存在し、正確にこの名前を持っていますか? 'dir(textFilename {p})'を試してください、それは現れますか?そうでなければ 'dir(" C:\ Users \ Biswajit \ Desktop \ Biswajit_nimmy \ *。txt ")'を試してください。もしそうなら、fopenがそれを開くことができない別の理由がなければならない。別のプログラムによってロックされている可能性はありますか? – Florian

+0

私が前に言及したことを忘れたことの1つは、コードを実行するときにfidが-1でないことです。これはファイルを開くことができることを示します。 fidは5または8または16などになります。 – biswajit

関連する問題