1

txt ファイルから変数をインポートする必要があります。このファイルには 3 つの主要な部分があります。

A) 一般的な情報を含む最初の見出し

B) 各列の見出し - 変数

C) すべての列の数値データ

以下のように:

Headlines - Headlines - Headlines - Headlines
Headlines - Headlines - Headlines - Headlines


#    A      |      B              C      |      D        | 
# ----------+----------------------------+---------------|  
#    1      |  0.0000E+00  +  0.0000E+00 |    0.0000     |
#    2/3    |  0.0000E+00 +/- 0.0000E+00 |    0.0000     |
#    4/5    |  0.0000E+00 +/- 0.0000E+00 |    0.0000     |
#    6      |  0.0000E+00  +  0.0000E+00 |    0.0000     |

問題は、最初の見出しが毎回変わることです。そのため、回避するために特定の行数を最初に宣言することはできません。

ご覧のとおり、2 つの異なる行形式があります。したがって、すべての行に特定の形式を記述することはできず、すべての列の数値データの数も変化しています。

それはできません (Data=textscan(fid,'%s %f %s %f %s %f %s %f', 'headlines', 4)

行フォーマットは 2 種類しかありません

すべての行の数値データのみをインポートするにはどうすればよいですか。

助けてください

4

2 に答える 2

0

textscanファイル全体ではなく、行ごとに適用できます。たとえば、あなたが与えた例に基づいて(そして、一番上の行からデータ形式を決定する関数を書いたと仮定して):

fileID = fopen(fileName);
blockLine = 0;
while ~feof(fileID)
    currLine = fgetl(fileID);
    % Check if we've reached the datablock
    if strcmpi(currLine(1),'#')
       blockLine = blockLine + 1;
    end
    % Use first line of datablock to determine textscan format
    if blockLine == 1
        textFormat = [insert format determination function];
    elseif blockLine > 2
        % Ignoring second line (dashes only)
        lineData = textscan(currLine,textFormat);
        [insert code to distribute data to larger variables]
    end
end
fclose(fileID);
于 2013-07-23T19:59:56.177 に答える