Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中从记事本文件中读取数据块?_Matlab_File Io_Text Files_Chunks - Fatal编程技术网

如何在Matlab中从记事本文件中读取数据块?

如何在Matlab中从记事本文件中读取数据块?,matlab,file-io,text-files,chunks,Matlab,File Io,Text Files,Chunks,我的数据格式如下: TABLE NUMBER 1 FILE: name_1 name_2 TIME name_3 day name_4 -0.01 0 364.99 35368.4 729.99 29307 1094.99 27309.5 146

我的数据格式如下:

TABLE NUMBER 1
                                                FILE: name_1
                                                            name_2
TIME    name_3  
day name_4  
-0.01   0   
364.99  35368.4 
729.99  29307   
1094.99 27309.5 
1460.99 26058.8 
1825.99 25100.4 
2190.99 24364   
2555.99 23757.1 
2921.99 23240.8 
3286.99 22785   
3651.99 22376.8 
4016.99 22006.1 
4382.99 21664.7 
4747.99 21348.3 
5112.99 21052.5 
5477.99 20774.1 
5843.99 20509.9 
6208.99 20259.7 
6573.99 20021.3 
6938.99 19793.5 
7304.99 19576.6 
TABLE NUMBER 2
                                                FILE: name_1
                                                            name_5
TIME    name_6  
day name_7  
-0.01   0   
364.99  43110.4 
729.99  37974.1 
1094.99 36175.9 
1460.99 34957.9 
1825.99 34036.3 
2190.99 33293.3 
2555.99 32665.8 
2921.99 32118.7 
3286.99 31626.4 
3651.99 31175.1 
4016.99 30758   
4382.99 30368.5 
4747.99 30005.1 
5112.99 29663   
5477.99 29340   
5843.99 29035.2 
6208.99 28752.4 
6573.99 28489.7 
6938.99 28244.2 
7304.99 28012.9 
TABLE NUMBER 3
到目前为止,我一直在拆分这些数据,并通过以下方式从每个文件中读取变量
(时间和名称)

[TIME(:,j), name_i(:,j)]=textread('filename','%f\t%f','headerlines',5);

但现在我将这些文件的数据生成为一个文件,如开始部分所示。例如,我想分别为name_3、name_6、name_9读取和存储向量TIME1、TIME2、TIME3、TIME4、TIME5中的时间数据,对其他变量也是如此。

首先,我建议不要使用变量名,如TIME1、TIME2等,因为这样很快就会变得混乱。相反,您可以使用一个具有五行(每个井一行)和一列或两列的单元阵列。在下面的示例代码中,
wellData{2,1}
是第二口井的时间,
wellData{2,2}
是相应的年产油率SC

也许有更优雅的阅读方式;这里有一些简单的事情:

%# open the file
fid = fopen('Reportq.rwo');

%# read it into one big array, row by row
fileContents = textscan(fid,'%s','Delimiter','\n');
fileContents = fileContents{1};
fclose(fid); %# don't forget to close the file again

%# find rows containing TABLE NUMBER
wellStarts = strmatch('TABLE NUMBER',fileContents);
nWells = length(wellStarts);

%# loop through the wells and read the numeric data
wellData = cell(nWells,2);
wellStarts = [wellStarts;length(fileContents)];

for w = 1:nWells 
    %# read lines containing numbers
    tmp = fileContents(wellStarts(w)+5:wellStarts(w+1)-1);
    %# convert strings to numbers
    tmp = cellfun(@str2num,tmp,'uniformOutput',false);
    %# catenate array
    tmp = cat(1,tmp{:});
    %# assign output
    wellData(w,:) = mat2cell(tmp,size(tmp,1),[1,1]);
end