2016-07-21 6 views
-1

にERROこれが私のスクリプトの一部です:指数は行列dimentionsを超えたが、MATLAB

fid = fopen([directory '001/listing.txt'],'r'); 
tline = fgetl(fid); 

ii = 0; 
while (tline ~= -1) 
    ii = ii + 1; 
    year(ii) = str2num(tline(11:14)); 
    month(ii) = str2num(tline(15:16)); 
    day(ii) = str2num(tline(17:18)); 
    hour(ii) = str2num(tline(20:21)); 
    min(ii) = str2num(tline(22:23)); 
    sec(ii) = str2num(tline(24:25)); 
    tline = fgetl(fid); 
end 

fclose(fid); 

私はエラー「インデックスが行列の次元を超えて」を取得しておきます。誰かがここで私を助けることができる?

+0

テキストファイルのどこかの行は25文字ではないため、 'tline'は25文字ではありません。 – rayryeng

+1

しばらくの間、 'tline'のサイズを表示して、どこに問題があるのか​​理解することができます。 –

+2

'dbstop if error'を呼び出してコードを実行してください:http://stackoverflow.com/a/3010636/97160 – Amro

答えて

0

場合によってはtlineが25文字未満です。

私の推測では、fgetlには-1が返される空白の文字列がファイルに残っています。

は、空行をスキップするだけで、しばらくしてifを置く:

if (length(tline) == 0) 
    continue 
end 

それでも問題が解決しない場合は、あなたが処理するすべての行が長く、少なくとも25個の文字であることを確認するために<25ため== 0一部を変更します。

+4

これはコメントではないはずですか? –

+0

@Sardar_Usama私は、現在の回答は限られた範囲しかないことに同意し、コメントとしても書いています(btw rayryengはまさにそれを行いました)。コードの例を追加して、問題を具体的に説明することができます。 – Matt

+0

私は、行が空であるか25文字よりも短いかどうかをチェックすることで、問題の解決策を提供するように編集しました。 –

関連する問題