0

.cnv ファイルからデータを読み込もうとしています。私はファイルを開くことができます:

TopFolder = 'Name_of_my_file';
SubFolder = dir(fullfile(TopFolder,'*.cnv'));
fid = fopen(fullfile(TopFolder,SubFolder{i}));

すべてのデータは、他のヘッダーとは別の行にある文字列 END の後に配置されます。この文字列に続く行に格納されているデータをインポートしたいと思います。これはどのように達成できますか?

たとえば、.cnv ファイルの a セクションは次のようになります。

# datcnv_in = D:\data\110606_000.hex D:\instrument software\Seabird 2010-07\Seabird Con Files\SBE19_2108_ScufaTOBS.con
# datcnv_skipover = 0
# file_type = ascii
*END*
     -0.051     0.0312    15.4328   138.1551     0.0000     0.0000     0.0000     0.0000  0.000e+00
     -0.033     0.0305    15.4277   138.1551     0.0000     0.0000     0.0000     0.0000  0.000e+00

だから、私はEndの前にそれらの行を避けたいと思います

最初のステップは、END の行番号を見つけることでしょうか? どうすればいいですか?

4

3 に答える 3

1

まず、ファイルを開き、「END」 が見つかるまで行を検索します。

fid = fopen('yourfile.cnv')     % open file to read
fseek(fid,0,-1);                % set read position to beginning of file
while strcmp(fgetl(fid),'*END*') == 0 end        % go through lines until '*END*'

次に、データを行ごとに行列に読み込みます ( data):

n=1;                            
while 1
    tline = fgetl(fid)                 % read in line
    if ~ischar(tline), break, end       % if eof, break and finish
    data(:,n) = sscanf(tline,'%f')     % put numbers in a matrix (in columns)
    n=n+1
end

fclose(fid)    % close file
于 2012-11-02T23:50:29.887 に答える
0

matlab でインポート ウィザードを使用する場合、ヘッダー行の数を指定できます。これを 4 に設定すると、この例で機能するはずです。

インポート ウィザードを使用した後、将来のためにプロセスを自動化したい場合は、コードを生成することができます。

于 2012-11-02T09:15:33.890 に答える