0

私は問題に苦しんでいて、簡単な方法を望んでいます。(1.02 1.23 3.32)形式のいくつかのベクトル値を持つデータの大きな配列があります。表形式で1.021.233.32として欲しいです。ここでの問題は、区切り文字'('と')'の2つのタイプがあることです。

誰かがこのためのコードを書くのを手伝ってもらえますか?私はこのようなものを持っています:

 filename = 'U.dat';
delimiterIn = '(';
headerlinesIn = 0;
A = textscan(filename,delimiterIn,headerlinesIn);

ただし、区切り文字 "("が1つしかないため、どちらも機能しません。

ニシャント

4

1 に答える 1

0

テキスト ファイルが次のような場合:

(1 2 3) (4 5 6)
(7 8 9) (10 11 12)

文字列として読み込んで、次のようにベクトルのセル配列に変換できます。

% read in file
clear all
filename = 'delim.txt';
fid  = fopen(filename); %opens file for reading
tline = fgets(fid); %reads in a line
index = 1; 
 %reads in all lines until the end of the file is reached
while ischar(tline)
    data{index} = tline;     
    tline = fgets(fid);         
    index = index + 1;
end
fclose(fid); %close file

% convert strings to a cell array of vectors
rowIndex = 1;
colIndex = 1;
outData = {};
innerStr = [];

for aCell = data  % for each entry in data
    sline = aCell{1,1}; 
    for c = sline % for each charecter in the line
        if strcmp(c, '(')
            innerStr = [];
        elseif strcmp(c, ')')
            outData{rowIndex,colIndex} = num2str(innerStr);
            colIndex = colIndex + 1;
        else
            innerStr = [innerStr, c];
        end
    end

     rowIndex = rowIndex + 1;
     colIndex = 1;
end

outData  
于 2013-03-21T16:01:20.307 に答える