0

txt ファイルのアップロードを含む GUI プログラムに取り組んでいます。ファイルの最初の 80 行には、必要のない情報が含まれています。数値データとテキスト データが混在しています。たとえば、これは使用したくないデータの数行です。

vertical_line_flag;0
vertical_line_ratio;0
laser_wavelength;0
laser_powerlevel;0
overlay_js;0
相対強度補正フラグ;0
ピクセル;波長;波数;ラマン シフト;ダーク;リファレンス;生データ #1;ダーク減算 #1;%TR #1;吸光度#1;放射照度 (ルーメン) #1;
0;165.98;60247.73;-60247.73;0.0000;65535.0000;1125.0000;31.0000;0.0000;0.0000;0.0000; 1;166.38;60103.59;-60103.59;0.0000;65535.0000;549.0000;-545.0000;0.0000;0.0000;0.0000; 2;166.78;59960.14;-59960.14;0.0000;65535.0000;0.0000;-1094.0000;0.0000;0.0000;0.0000; 3;167.18;59817.38;-59817.38;0.0000;65535.0000;998.0000;-96.0000;0.0000;0.0000;0.0000; 4;167.57;59675.31;-59675.31;0.0000;65535.0000;1046.0000;-48.0000;0.0000;0.0000;0.0000; 5;167.97;59533.90;-59533.90;0.0000;65535.0000;1020.0000;-74.0000;0.0000;0.0000;0.0000; 6;168.37;59393.17;-59393.17;0.0000;65535.0000;1003.0000;-91.0000;0.0000;0.0000;0.0000; 7;168.77;59253.11;-59253.11;0.0000;65535.0000;1051.0000;-43.0000;0.0000;0.0000;0.0000; 8;169.17;59113.71;-59113.71;0.0000;65535.0000;1024.0000;-70.0000;0.0000;0.0000;0.0000; 9;169.56;58974.97;-58974.97;0.0000;65535.0000;1045.0000;-49.0000;0.0000;0.0000; 0.0000; 10;169.96;58836.88;-58836.88;0.0000;65535.0000;1091.0000;-3.0000;0.0000;0.0000;0.0000; 11;170.36;58699.44;-58699.44;0.0000;65535.0000;1064.0000;-30.0000;0.0000;0.0000;0.0000; 12;170.76;58562.65;-58562.65;0.0000;65535.0000;1019.0000;-75.0000;0.0000;0.0000;0.0000;

(ルーメン) #1 の後の行のように、数字が始まるポイント。プログラムで使用したいデータです。

このコードを使用して、ファイルの最初の 80 行をスキップしようとしました

[FileName,PathName]= uigetfile('*.txt*','Files to Study');

file =fullfile(PathName,FileName);

 fid = fopen(file);
 A = textscan(fid,'%f' ,'HeaderLines',80);

しかし、これは A= [0x1 double] になります

これを解決する方法についての提案は大歓迎です。

4

2 に答える 2

1

このコードを試してください:

A = [];
tline = fgets(fid);
while ischar(tline)
    parts = textscan(tline, '%d;');
    if numel(parts{1}) > 0
        A = [ A ; parts{:}' ];
    end
    tline = fgets(fid);

end

fclose(fid);

基本的にはテキストファイル内の数値のある行を探します。これらの行のそれぞれについて、値をスキャンし、行列 A の行として添付します。

あなたのテキストで得られる出力は次のとおりです。

A =

       0         166       60248      -60248           0       65535        1125          31           0           0           0
       1         166       60104      -60104           0       65535         549        -545           0           0           0
       2         167       59960      -59960           0       65535           0       -1094           0           0           0
       3         167       59817      -59817           0       65535         998         -96           0           0           0
       4         168       59675      -59675           0       65535        1046         -48           0           0           0
       5         168       59534      -59534           0       65535        1020         -74           0           0           0
       ...

よろしくお願いします。

于 2014-04-28T14:04:54.847 に答える